我刚刚使用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
断言不起作用。
这里发生了什么?我需要启用这个设置吗?
编辑:
到目前为止我考虑/尝试的事情:
org.junit.Ignore
,因此不会使用错误的Ignore
。@Ignore
,@Ignore @Test
和@Ignore("message") @Test
;一切都失败了。 编辑2:
我使用MyEclipse通过New > Other; Java > JUnit > JUnit Test Case; New JUnit 4 test
创建了测试,我的构建路径中的库是JUnit 4.我正在使用ant构建并实际运行MyEclipse的案例。
答案 0 :(得分:42)
确保您导入了正确的@Ignore
。确保明确使用@org.junit.Ignore
。
仔细检查您的测试是否由JUnit 4执行,而不是3.最简单的方法是更改测试名称,使其不以test
为前缀(现在它不应该'完全执行,JUnit 4无论如何都不需要这个前缀)或检查你的测试用例继承层次结构:不应该直接或间接地从junit.framework.TestCase
扩展(Junit 3要求)。
答案 1 :(得分:4)
即使JUnit 3不在我的类路径上,我也遇到了这个问题。我相信Junit 4上的兼容模式会在你的testname中找到'test'前缀,因此作为JUnit 3运行而不是拿起@Ignore。解决方案是重命名您的测试。
答案 2 :(得分:2)
您确定重新编译了测试类吗?
这是一个非常常见的问题,重新编译失败,因为源中存在拼写错误(例如缺少分号),并且IDE不会告诉您编译失败。
尝试删除target/test-classes
文件夹。
答案 3 :(得分:1)
在我的情况下,我发现我的IDE正在执行测试而忽略@Ignore
注释。当我运行mvn install
(或任何其他maven阶段)时,测试被跳过,这就是我实际上的目标(参见附图)。
答案 4 :(得分:0)
我认为只是@Ignore会跳过测试
答案 5 :(得分:0)
确保也导入了测试类,对我来说就是这样,
import org.junit.Ignore;
import org.junit.Test;