在AssertJ中,软断言通过使用softAssertions
对象来创建。当使用softAssertions.assertAll()
方法时,如果有任何断言失败,它将记录失败的断言,但不会中止测试。
要将软断言转换为硬断言,可以使用assertThatCode
方法包装需要进行断言的代码块,并在其后调用doesNotThrowAnyException()
方法。这样,如果代码块中的断言失败,将抛出一个AssertionError
,使其成为一个硬断言。
以下是一个示例代码:
import org.assertj.core.api.Assertions;
import org.assertj.core.api.SoftAssertions;
public class SoftAssertExample {
public void someMethod() {
int x = 5;
int y = 10;
SoftAssertions softAssertions = new SoftAssertions();
softAssertions.assertThat(x).isEqualTo(5);
softAssertions.assertThat(y).isEqualTo(20); // This assertion will fail
softAssertions.assertAll(); // Soft assertion
Assertions.assertThatCode(() -> {
Assertions.assertThat(x).isEqualTo(5);
Assertions.assertThat(y).isEqualTo(20); // This assertion will fail
}).doesNotThrowAnyException(); // Hard assertion
}
public static void main(String[] args) {
SoftAssertExample example = new SoftAssertExample();
example.someMethod();
}
}
在上面的示例中,软断言将记录失败的断言,但不会抛出异常。然而,通过使用assertThatCode
方法和doesNotThrowAnyException
方法,我们可以将其转换为硬断言,如果有任何断言失败,将抛出AssertionError
异常。