快速背景:我一直在寻找一个Maven / Surefire测试运行问题几天,我已经把它缩小到少数怀疑的测试.我看到的行为是疯狂的.我从mvn清洁测试开始:250次测试运行,0跳过.现在,我将可疑的测试
这让我想到了我的问题:我称之为“可疑”测试的原因是整个课程都是用@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>