在方法完成时故意使 JUnit 测试失败
Purposefully failing a JUnit test upon method completion
背景
我正在使用 Selenium/Junit 测试环境,我想实现一个 class 来执行 "soft asserts": 意思是我希望它记录断言是否通过,但在我明确告诉它验证断言之前,测试用例实际上并没有失败。这样我就可以检查页面上的多个字段并记录所有不匹配的字段。
当前代码
我的 "verify" 方法如此显示(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 class
如果您想故意让 JUnit 测试失败,您应该使用 org.junit.Assert.fail()
另一种选择是切换到 TestNG 框架,该框架在 latest version.
中已有 SoftAssert
class
您可以使用 JUnit 的 ErrorCollector 规则。
背景
我正在使用 Selenium/Junit 测试环境,我想实现一个 class 来执行 "soft asserts": 意思是我希望它记录断言是否通过,但在我明确告诉它验证断言之前,测试用例实际上并没有失败。这样我就可以检查页面上的多个字段并记录所有不匹配的字段。
当前代码
我的 "verify" 方法如此显示(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 class
如果您想故意让 JUnit 测试失败,您应该使用 org.junit.Assert.fail()
另一种选择是切换到 TestNG 框架,该框架在 latest version.
中已有SoftAssert
class
您可以使用 JUnit 的 ErrorCollector 规则。