[英]What can cause JUnit to disregard @Ignore annotations?
我只是用MyEclipse自动生成了一些JUnit测试用例。 生成的方法之一如下所示:
@Ignore("Ignored") @Test
public void testCreateRevision()
{
fail("Not yet implemented"); // TODO
}
我手动添加了@Ignore
注释。 但是,当我运行测试时,JUnit 在“失败”下列出了该方法和其他类似方法,而不是忽略它们(相关: JUnit 中的失败和错误有什么区别? )。 它显示“尚未实现”消息而不是“忽略”消息。 显然, fail()
必须被调用,因此, @Ignore
断言不起作用。
这里发生了什么? 是否需要启用设置才能使其正常工作?
编辑:
到目前为止我考虑过/尝试过的事情:
org.junit.Ignore
,所以这不是使用错误Ignore
的情况。@Ignore @Test
和@Ignore
@Ignore("message") @Test
; 都失败了。 编辑2:
我使用 MyEclipse 创建了测试,通过New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
,我的构建路径中的库是 JUnit 4。我正在使用 ant 构建并实际使用 MyEclipse 运行案例。
确保您正在导入正确的@Ignore
。 确保明确使用@org.junit.Ignore
。
仔细检查您的测试是否由 JUnit 4 执行,而不是 3。最简单的方法是更改测试名称,使其不以test
为前缀(现在根本不应该执行,JUnit 4 不会无论如何都需要这个前缀)或检查您的测试用例 inheritance 层次结构:它不应该直接或间接地从junit.framework.TestCase
(Junit 3 要求)。
即使 JUnit 3 不在我的类路径中,我也遇到了这个问题。 我相信 Junit 4 上的兼容模式会使用您的测试名称中的“测试”前缀,因此会以 JUnit 3 的方式运行,而不是使用 @Ignore。 解决方案是重命名您的测试。
你确定测试类被重新编译了吗?
这是一个很常见的问题,重新编译失败是因为源代码中的某处存在拼写错误(例如缺少分号),并且 IDE 不会告诉您编译失败。
尝试删除target/test-classes
文件夹。
就我而言,我发现我的 IDE 正在执行测试,而忽略了@Ignore
注释。 当我运行mvn install
(或任何其他 maven 阶段)时,测试被跳过,这就是我的实际目标(见附件插图)。
我认为它只是@Ignore 会跳过测试
确保测试 class 也被导入修复了我的问题,即
import org.junit.Ignore;
import org.junit.Test;
在 JUnit5 中使用@Disable
或@Disable("Reason text")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.