Java JUnit5运行所有断言,即使有失败的断言 在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"); }

Java JUnit5运行所有断言,即使有失败的断言 在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"); },java,junit,junit5,Java,Junit,Junit5,我的目的是运行所有的断言,并跟踪失败的断言只占第二位,而不是第三位和第一位。您可以使用JUnit5 例如: @Test public void unitForTest_SomeScenario_ShouldReturn() { //Act var myObj = myServ.getMyObj(); //Arrange assertThat(myObj).isNotNull(); assertThat(myObj.getName()).isEqualTo

我的目的是运行所有的断言,并跟踪失败的断言只占第二位,而不是第三位和第一位。

您可以使用JUnit5

例如:

@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");
}
@测试
public void unitForTest\u SomeScenario\u ShouldReturn(){
字符串name=“y”;
资产(
()->assertThat(name).isNotNull(),
()->assertThat(name).isEqualTo(“x”),//断言失败
()->资产(名称).isEqualTo(“y”),
()->assertThat(name.isEqualTo(“z”)//断言失败
);
}
将以以下详细响应失败:

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)
期望:
等于:
但事实并非如此。
比较失败:
预期:x
实际:y
期望:
等于:
但事实并非如此。
比较失败:
预期:z
实际:y
org.opentest4j.multipleFailureError:多个故障(2个故障)

注意:由于对您的问题的一些评论暗示,使用单独的测试(而不是使用一个测试和多个断言)可能更好地表达这一点,只要多个断言是单个“概念断言”的一部分,那么我肯定可以看到使用
assertAll

的案例。您创建了三个独立的测试用例。这是否回答了您的问题@Joe不,很抱歉,这个问题不能回答我的问题,因为我想使用JUnit5的可能性,我知道有一些东西像glythingproposed@Joe提出JUnit 4问题作为JUnit 5问题的副本没有多大意义。@Joe规则在JUnit 5中不再存在,因此,
ErrorCollector
解决方案不再有效。JUnit5中的内置选项是
Assertions.assertAll
,这些答案都没有涉及到它。