我进行了以下测试,我在其中放置了 try catch ,因此如果实际值不等于预期值,它就会失败:
try{
Assert.assertEquals(ExpectedCount, ActualCount);
}catch (Throwable t){
System.out.println ("Actual value is not equal to expected value");
}
每当我运行这个测试时,它都会通过。但是,如果预期=实际,则不会打印任何消息,这是正确的。如果它们不相等,则我打印的消息。所以测试逻辑是有效的。
但是 Juint 测试仍然通过。
我一直在尝试合并以下内容,但无法使其工作:
(在测试类的公共(public)级别添加了此内容)
@Rule
Public ErrorCollected errCollector = new ErrorCollector();
添加:
errCollector.addError(t);
下
System.out.println ("Actual value is not equal to expected value");
我收到错误“规则无法解析为类型
”,它没有给我任何导入选项。
我一直试图找出如何使用@Rule
方法使测试失败,但无法弄清楚。
最佳答案
正如@oers所说,你找不到Rule的原因可能是因为你的JUnit版本太旧了。尝试更高版本,> 4.7。
解决问题的最简单方法就是重新抛出您捕获的异常:
try {
Assert.assertEquals(ExpectedCount, ActualCount);
} catch (Throwable t) {
System.out.println ("Actual value is not equal to expected value");
throw t;
}
但是您需要将 throws Throwable 添加到您的测试方法中。您还有另一种选择,可以向断言添加描述:
Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount);
关于testing - 如何在 Selenium Junit 中使用 @Rule 使测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578231/