我正在使用Selenium / Junit测试环境,我想实现一个类来执行"软断言":这意味着我希望它记录断言是否通过,但实际上并未失败测试用例,直到我明确告诉它验证Asserts。这样我可以检查页面上的多个字段,记录所有不匹配的字段。
我的"验证"方法如此显示(assertTrue
/ assertFalse
存在类似的方法):
public static void verifyEquals(Object expected, Object actual) {
try {
assertEquals(expected, actual);
} catch (Throwable e) {
verificationFailuresList.add(e);
}
}
验证完所有字段后,我会调用以下方法:
public static void checkAllPassed() {
if (!verificationFailuresList.isEmpty()) {
for (Throwable failureThrowable : verificationFailuresList) {
log.error("Verification failure:" + failureThrowable.getMessage(), failureThrowable);
// assertTrue(false);
}
}
}
目前,我目前只使用assertTrue(false)
作为快速验证测试用例的方法;然而,这会使日志混乱,并且无意义的失败并进一步推动真正的问题。是否有一种更清洁的方式来故意使JUnit测试用例失败?如果没有,是否有更好的解决方案来实现软断言?我知道article有一个非常好的实现,但据我所知,JUnit没有等同于IInvokedMethodListener类
答案 0 :(得分:1)
如果您想故意失败JUnit测试,则应使用org.junit.Assert.fail()
其他选项是切换到TestNG框架,该框架中已有SoftAssert
个latest version。
答案 1 :(得分:1)
您可以使用JUnit的ErrorCollector规则。