【发布时间】:2021-12-15 16:31:33
【问题描述】:
我刚刚使用 MyEclipse 自动生成了一些 JUnit 测试用例。生成的方法之一如下所示:
@Ignore("Ignored") @Test
public void testCreateRevision()
{
fail("Not yet implemented"); // TODO
}
我手动添加了@Ignore 注释。但是,当我运行测试时,JUnit 在“失败”下列出了该方法和其他类似方法,而不是忽略它们(相关:What's the difference between failure and error in JUnit?)。它显示“尚未实现”消息而不是“忽略”消息。显然,fail() 必须被调用,因此,@Ignore 断言不起作用。
这里发生了什么?我需要启用什么设置才能使其正常工作吗?
编辑:
到目前为止我考虑过/尝试过的事情:
- 我使用的是 JUnit 4,所以不是版本问题。
- 我正在导入
org.junit.Ignore,所以这不是使用错误Ignore的情况。 - 我试过单独使用
@Ignore,@Ignore @Test和@Ignore("message") @Test;都失败了。
编辑 2:
我通过 New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test 使用 MyEclipse 创建了测试,我的构建路径中的库是 JUnit 4。我正在使用 ant 构建并实际使用 MyEclipse 运行案例。
【问题讨论】:
-
疯狂猜测:查看您的导入语句并确保注释是
org.junit.Ignore或任何它应该是的,而不是来自完全不同的包的其他注释,恰好具有相同的名称. -
@Matrix,好主意,但我确实有正确的导入。
-
您运行 JUnit 3 还是 Junit 4? JUnit 3 将忽略注释。要找出答案,请将方法重命名为不以
test开头并删除@Ignore 注释并重试。如果测试没有执行意味着你正在运行 Junit 3 -
正如我在帖子的初始版本和编辑版本中所述,我使用的是 JUnit 4。
-
您如何运行测试 - 在 IDE 中,来自 Maven、Ant 等?您如何验证测试是使用 JUnit 4 运行器运行的?