我已经进行了以下测试,我尝试了一下,如果实际值不等于预期值则会失败:
try{
Assert.assertEquals(ExpectedCount, ActualCount);
}catch (Throwable t){
System.out.println ("Actual value is not equal to expected value");
}
每当我运行此测试时,它都会通过。但是,如果期望=实际没有打印消息,这是正确的。如果它们不相等,那么我打印的信息。所以测试逻辑是有效的。
然而,Juint测试仍然通过。
我一直在尝试合并以下内容但无法让它起作用:
(在测试课程的公共级别添加此内容)
@Rule
Public ErrorCollected errCollector = new ErrorCollector();
添加了:
errCollector.addError(t);
在
下System.out.println ("Actual value is not equal to expected value");
我收到错误“Rule cannot be resolved to a type
”它没有给我任何导入选项。
我一直试图找出如何使用@Rule
方法使测试失败,但无法弄明白。
答案 0 :(得分:3)
正如@oers所说,你找不到规则的原因可能是因为你的JUnit版本太旧了。请尝试更高版本,> 4.7。
解决问题的最简单方法就是重新抛出您正在捕获的异常:
try {
Assert.assertEquals(ExpectedCount, ActualCount);
} catch (Throwable t) {
System.out.println ("Actual value is not equal to expected value");
throw t;
}
但你需要为你的测试方法添加thrrow Throwable。您还有另一种选择,可以在断言中添加说明:
Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount);