我刚刚使用MyEclipse自动生成了一些JUnit测试用例。生成的方法之一如下所示:
@Ignore("Ignored") @Test
public void testCreateRevision()
{
fail("Not yet implemented"); // TODO
}
我手动添加了@Ignore
注解。但是,当我运行测试时,JUnit将该方法以及其他类似的方法列在“failures”下,而不是忽略它们(相关内容:What's the difference between failure and error in JUnit?)。并且它显示“尚未实现”消息,而不是“忽略”消息。显然,fail()
必须被调用,因此@Ignore
Assert不起作用。
这是怎么回事?是否需要启用某个设置才能使其正常工作?
编辑:
到目前为止我考虑/尝试过的事情:
- 我使用的是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运行了这个案例。
7条答案
按热度按时间agxfikkp1#
1.请确保导入的是正确的
@Ignore
。为确保正确,请明确使用@org.junit.Ignore
。1.仔细检查您的测试是否由JUnit 4而不是3执行。最简单的方法是更改测试名称,使其不以
test
作为前缀(现在它根本不应执行,而且JUnit 4也不需要此前缀),或者检查您的测试用例继承层次结构:它不应该直接或间接地从junit.framework.TestCase
扩展(Junit 3要求)。1zmg4dgp2#
即使JUnit 3不在我的类路径上,我也遇到了这个问题。我相信JUnit 4上的兼容性模式会在您的测试名称中选择'test'前缀,因此会像JUnit 3那样操作,而不是选择@Ignore。解决方法是重命名您的测试。
mqkwyuun3#
在JUnit5中,使用
@Disabled
或@Disabled("Reason text")
pjngdqdw4#
是否确实重新编译了测试类?
这是一个很常见的问题,因为源代码中的某个地方有打字错误(如缺少分号),所以重新编译失败,IDE不会告诉您编译失败。
请尝试删除
target/test-classes
文件夹。gupuwyp25#
在我的例子中,我发现我的IDE在执行测试时忽略了
@Ignore
注解。当我运行mvn install
(或任何其他maven阶段)时,测试被跳过了,这正是我实际上的目标(见附件)。Ilustration of ways of execution
lxkprmvk6#
我想它只是@忽略,将跳过测试
JUnit Ignore
0qx6xfy67#
确保测试类也被导入为我解决了这个问题,即。