SoftAssertions是Assertj的一种断言类型,它可以在一个测试中收集多个失败的断言而不立即抛出AssertionError。然而,在使用SoftAssertions进行断言时,如果存在断言失败导致最终测试失败的情况,Assertj会抛出AssertionError作为失败的测试的结果。
但是,有时候我们希望在出现失败的情况时,不抛出异常,而是继续执行测试并记录失败。为了实现这个功能,可以在SoftAssertions对象的构造函数中传入一个参数,详细说明了需要抑制的异常类型。
以下代码示例演示如何使用SoftAssertions并抑制AssertionError异常:
import org.assertj.core.api.Assertions;
import org.assertj.core.api.SoftAssertions;
public class SoftAssertionsDemo {
public void testSoftAssertions() {
SoftAssertions softAssertions = new SoftAssertions().dontFailOnAssertionError();
String actualString = "hello world";
String expectedString = "Hello world";
softAssertions.assertThat(actualString).isEqualToIgnoringCase(expectedString);
softAssertions.assertThat(actualString).startsWith("hello");
softAssertions.assertThat(actualString).endsWith("ld");
softAssertions.assertAll(); // 捕获SoftAssertionError异常,继续执行并记录失败
// 在SoftAssertions后添加原始的断言方法也同样适用
Assertions.assertThat(actualString).isNotEqualTo(expectedString);
}
}
在这个示例中,我们使用了SoftAssertions的dontFailOnAssertionError()方法在出现失败情况时不立即抛出异常。相反地,使用assertAll()方法来捕获SoftAssertionError异常以继续执行并记录失败。此外,我们还添加了Assertj的原始断言方法来演示如何在SoftAssertions后添加原始的断言方法。
通过这种方式,我们可以在Assertj中使用SoftAssertions并捕获异常来实现记录断言失败但继续测试的功能。