提问人:divad 提问时间:10/28/2022 更新时间:10/28/2022 访问量:246
JUnit 5 TestExecutionListeners 和中间容器
JUnit 5 TestExecutionListeners and intermediate containers
问:
因此,我在 JUnit5 的 TestExecutionListener 的文档中看到了这样一句话: “与 JUnit 4 相反,测试引擎不仅应该报告表示测试计划中可执行叶子的标识符的事件,还应该报告所有中间容器的事件。” 文档链接 -> https://junit.org/junit5/docs/5.0.3/api/org/junit/platform/launcher/TestExecutionListener.html
我的问题是:什么是中间容器?
答:
1赞
johanneslink
10/28/2022
#1
任何 JUnit 5 测试引擎都可以确定测试树的构造方式。
A 描述此树中的一个节点,它是以下三种类型之一:TestIdentifier
CONTAINER
TEST
CONTAINER_AND_TEST
可以执行测试,而容器具有子项,子项本身可以是三种类型中的任何一种。
让我们看一个使用 JUnit Jupiter 的示例:
class MyTestContainer {
@Test void test1() { }
@Nested
class InnerTestContainer {
@Test void test2() { }
}
}
运行此命令将宣布以下事件 - 可能顺序略有不同:
- 已开始执行:MyTestContainer
- 已开始执行:MyTestContainer.test1
- 执行完成:MyTestContainer.test1
- 已开始执行:MyTestContainer.InnerTestContainer
- 已开始执行:MyTestContainer.InnerTestContainer.test2
- 执行完成:MyTestContainer.InnerTestContainer.test2
- 执行完成:MyTestContainer.InnerTestContainer
- 执行完成:MyTestContainer
请记住,如何定义容器和可执行测试完全取决于测试引擎。一些 (ArchUnit) 使用成员变量进行测试,另一些则通过自己的 DSL 构建层次结构。例如,黄瓜有自己的方式来分组和嵌套特征、规格等。
希望我能澄清测试、容器和形成最终测试计划的树背后的想法。
评论
0赞
divad
10/28/2022
好。根据您的解释,中间容器用于例如示例中嵌套的“InnerTestContainer”。理解!谢谢。
评论