当前位置 : 主页 > 网络安全 > 测试自动化 >

单元测试 – 如果我@Ignore在JUnit4中的一个测试类,@BeforeClass是否仍然运行?

来源:互联网 收集:自由互联 发布时间:2021-06-19
快速背景:我一直在寻找一个Maven / Surefire测试运行问题几天,我已经把它缩小到少数怀疑的测试.我看到的行为是疯狂的.我从mvn清洁测试开始:250次测试运行,0跳过.现在,我将可疑的测试
快速背景:我一直在寻找一个Maven / Surefire测试运行问题几天,我已经把它缩小到少数怀疑的测试.我看到的行为是疯狂的.我从mvn清洁测试开始:250次测试运行,0跳过.现在,我将可疑的测试移动到src / test / java中,然后重试:146次运行,0次跳过!即使使用-X标志,Maven的输出也不会提示其他测试没有运行.

这让我想到了我的问题:我称之为“可疑”测试的原因是整个课程都是用@Ignore进行装饰的,所以我可以想象,在我的测试源中包含它应该没有任何效果.然后它发生在我 – 这些类有@ BeforeClass / @ AfterClass方法
manage a dummy Zookeeper server.这是导致以前的行为,这就是为什么我们有测试@Ignored.

如果JUnit运行前/后代码但忽略测试,我不知道会发生什么(但它可能是超级坏的).这是发生吗?这是应该发生的吗?如果是这样,当我包含@BeforeClass / @AfterClass时,我应该如何说“为了参考,这是一个应该工作但需要修复的测试”?还有很大的兴趣:对于Surefire / Maven来说,这是做什么的呢,它导致无关的测试从地球上掉下来?

如果您使用@Ignore注释进行测试,那么@BeforeClass& @AfterClass得到运行,不管所有的测试是否都是@Ignored.

然而,如果Class有一个@Ignore注释,那么@BeforeClass& @AfterClass没有运行.

对于maven,如果你不想在特定的类中运行任何测试,那么你必须在肯定的或者安全的情况下忽略它们.将其添加到maven配置(参见Maven Surefire Plugin)

<excludes>
 <exclude>**/FoobarTest.class</exclude>
</excludes>
网友评论