什么会导致 JUnit 忽略@Ignore注释?

2022-09-01 05:58:44

我只是使用MyEclipse自动生成一些JUnit测试用例。生成的方法之一如下所示:

@Ignore("Ignored") @Test
public void testCreateRevision()
{
    fail("Not yet implemented"); // TODO
}

我手动添加了注释。但是,当我运行测试时,JUnit 在“失败”下列出了该方法和其他类似方法,而不是忽略它们(相关:JUnit 中的失败和错误之间有什么区别?)。它显示“尚未实现”消息,而不是“忽略”消息。显然,必须被调用,因此,断言不起作用。@Ignorefail()@Ignore

这是怎么回事?是否需要启用某个设置才能使其正常工作?

编辑:
到目前为止,我考虑/尝试过的事情:

  • 我使用的是JUnit 4,所以这不是版本问题。
  • 我正在导入 ,所以这不是错误使用的情况。org.junit.IgnoreIgnore
  • 我尝试过单独使用,并且 ;全部失败。@Ignore@Ignore @Test@Ignore("message") @Test

编辑 2 :
我使用 MyEclipse 创建了测试,通过 ,我的构建路径中的库是 JUnit 4。我正在用蚂蚁构建,实际上用MyEclipse运行这个案例。New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test


答案 1
  1. 确保您导入的 是正确的 。要确保明确使用。@Ignore@org.junit.Ignore

  2. 仔细检查测试是否由 JUnit 4 执行,而不是由 3 执行。最简单的方法是更改测试名称,使其不以前缀(现在根本不应该执行,JUnit 4 无论如何都不需要此前缀)或检查测试用例继承层次结构:它不应该直接或间接地从(Junit 3 要求)扩展。testjunit.framework.TestCase


答案 2

即使JUnit 3不在我的类路径上,我也遇到了这个问题。我相信 Junit 4 上的兼容模式会选择测试名称中的“test”前缀,因此可以像 JUnit 3 一样运行,而不是选择@Ignore。解决方案是重命名测试。


推荐