java 单侧 忽略异常注解_关于Java:什么会导致JUnit忽略@Ignore注释?

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

@Ignore("Ignored") @Test

public void testCreateRevision()

{

fail("Not yet implemented"); // TODO

}

我手动添加了@Ignore批注。但是,当我运行测试时,JUnit会在"失败"下列出该方法以及其他类似方法,而不是忽略它们(相关: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创建了测试,并且构建路径中的库是JUnit4。我正在使用ant进行构建,并实际上使用MyEclipse运行了该案例。

大胆猜测:查看您的import语句,确保注释是org.junit.Ignore或它应该是的注释,而不是完全不同的程序包中恰好具有相同名称的其他注释。

@Matrix,好主意,但我确实输入正确。

您运行JUnit 3还是Junit 4? JUnit 3将忽略注释。 为了找出答案,将方法重命名为不以test开头,然后删除@Ignore批注,然后重试。 如果未执行测试,则表明您正在运行Junit 3

正如我在帖子的初始和编辑版本中所述,我正在使用JUnit 4。

您如何在IDE中从Maven,Ant等运行测试? 您如何验证测试是否在JUnit 4运行程序上运行?

@matt,我将此评论(我的回复)移到了问题的正文中。

确保导入正确的@Ignore。为确保明确使用@org.junit.Ignore。

仔细检查您的测试是否由JUnit 4执行,而不是3。执行此操作的最简单方法是更改??测试名称,以使其不以test为前缀(现在完全不应执行,JUnit 4也不应该执行)完全不需要此前缀)或检查您的测试用例继承层次结构:它不应直接或间接地从junit.framework.TestCase扩展(Junit 3要求)。

我是,现在是。当您编写此答案时,我更新了我的帖子。不过谢谢!

啊,事实证明这是对的!在我工作时,有人将超类修改为JUnit 3,但我对此一无所知。

谢谢您,先生,您很棒

有关JUnit 3 vs 4的更多信息,请访问:stackoverflow.com/a/2635946/839128

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

太好了,这有所帮助。令人沮丧的是,Maven构建忽略了@ignore,然后失败了。谢谢!

我注意到的另一件事是,新版本的surefire插件(版本> = 2.8)可与带有@Ignore注释的testXyz一起使用,因此您无需重命名方法。

您确定测试类已重新编译?

这是一个很常见的问题,因为源中的某些地方出现错字(例如缺少分号),并且IDE不会告诉您编译失败,所以重新编译失败。

尝试删除target/test-classes文件夹。

或仅使用"项目">"清理"

@MatrixFrog:我有点不喜欢mvn clean:删除target总是比调用clean更快。同样,如果您的项目中包含许多类和生成的代码,则干净删除将比适当的删除更多。

花了我一段时间找到它们(其他人正在构建脚本,而我还不熟悉它),但这似乎不是我的问题。

就我而言,我发现我的IDE不考虑@Ignore注释而执行测试。当我运行mvn install(或任何其他Maven阶段)时,该测试被跳过了,而这正是我的真正目的(请参见附件)。

说明执行方式

我认为只是@Ignore会跳过测试

JUnit忽略

我确实尝试过,但是您知道链接到的页面兼有,对吗?"例如:@Ignore @Test public void something() { ..."

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值