junit 5 运行 所有断言,即使有一个失败
junit 5 run all assert even if there is failed one
JUnit 5 中是否有任何机制 运行 即使断言在中间失败,所有断言都在测试中?
例如:
@Test
public void unitForTest_SomeScenario_ShouldReturn() {
//Act
var myObj = myServ.getMyObj();
//Arrange
assertThat(myObj).isNotNull();
assertThat(myObj.getName()).isEqualTo("Steve"); //failed assert
assertThat(myObj.getLastName()).isEqualTo("Gates");
}
我的意图是运行所有失败的断言和跟踪只有第二个,而不是第三个和第一个。
您可以使用 JUnit5 的 assertAll。
例如:
@Test
public void unitForTest_SomeScenario_ShouldReturn() {
String name = "y";
assertAll(
() -> assertThat(name).isNotNull(),
() -> assertThat(name).isEqualTo("x"), // failed assert
() -> assertThat(name).isEqualTo("y"),
() -> assertThat(name).isEqualTo("z") // failed assert
);
}
将失败并显示以下详细响应:
Expecting:
<"y">
to be equal to:
<"x">
but was not.
Comparison Failure:
Expected :x
Actual :y
<Click to see difference>
Expecting:
<"y">
to be equal to:
<"z">
but was not.
Comparison Failure:
Expected :z
Actual :y
<Click to see difference>
org.opentest4j.MultipleFailuresError: Multiple Failures (2 failures)
注意:由于对您的问题的一些评论暗示这个 可能 可以通过使用单独的测试(而不是具有多个断言的一个测试)更好地表达,但是,只要多个断言是单个 'conceptual assertion' 的一部分,那么我绝对可以看到使用 assertAll
.
的情况
JUnit 5 中是否有任何机制 运行 即使断言在中间失败,所有断言都在测试中? 例如:
@Test
public void unitForTest_SomeScenario_ShouldReturn() {
//Act
var myObj = myServ.getMyObj();
//Arrange
assertThat(myObj).isNotNull();
assertThat(myObj.getName()).isEqualTo("Steve"); //failed assert
assertThat(myObj.getLastName()).isEqualTo("Gates");
}
我的意图是运行所有失败的断言和跟踪只有第二个,而不是第三个和第一个。
您可以使用 JUnit5 的 assertAll。
例如:
@Test
public void unitForTest_SomeScenario_ShouldReturn() {
String name = "y";
assertAll(
() -> assertThat(name).isNotNull(),
() -> assertThat(name).isEqualTo("x"), // failed assert
() -> assertThat(name).isEqualTo("y"),
() -> assertThat(name).isEqualTo("z") // failed assert
);
}
将失败并显示以下详细响应:
Expecting:
<"y">
to be equal to:
<"x">
but was not.
Comparison Failure:
Expected :x
Actual :y
<Click to see difference>
Expecting:
<"y">
to be equal to:
<"z">
but was not.
Comparison Failure:
Expected :z
Actual :y
<Click to see difference>
org.opentest4j.MultipleFailuresError: Multiple Failures (2 failures)
注意:由于对您的问题的一些评论暗示这个 可能 可以通过使用单独的测试(而不是具有多个断言的一个测试)更好地表达,但是,只要多个断言是单个 'conceptual assertion' 的一部分,那么我绝对可以看到使用 assertAll
.