junit 为什么我的'assertEquals'语句没有显示任何内容?

de90aj5v  于 2022-11-11  发布在  其他
关注(0)|答案(3)|浏览(177)

下面是我的JUnit5测试类的一个片段。

@Test
@DisplayName("This is just a simple JUnit 5 test")
void testSimple() {
    assertEquals(2, 3, "this is the 1st assertEquals");
    assertEquals(4, 5, "this is the 2nd assertEquals");
    assertEquals(5, 6, "this is the 3rd asswerEquals");
}

然而,当我运行这个程序时,我只得到了第一个assert语句来显示消息,因为它们都明显失败了,它们不应该都显示各自的消息吗?

8iwquhpp

8iwquhpp1#

正如上面注解部分所强调的,如果assertEquals失败,就会抛出异常,这会阻止后面的任何语句。

xzlaal3s

xzlaal3s2#

您可以使用assertAll来Assert所有测试:

Assertions.assertAll(
            "heading",
            () -> assertEquals(2, 3, "this is the 1st assertEquals"),
            () -> assertEquals(4, 5, "this is the 2nd assertEquals"),
            () -> assertEquals(5, 6, "this is the 3rd assertEquals")
    );
ymzxtsji

ymzxtsji3#

通常情况下,在遇到第一个失败的Assert后,JUnit将不会继续测试。这有几个原因,最重要的(恕我直言)是:

  • 如果一个Assert失败了,后面的Assert也可能失败,总之整个测试都被认为是失败的。
  • 可能的(但不是强制性的),你的第一个Assert可以为下面的Assert设置一些东西和/或检查它们的先决条件。

如果你需要在失败的请求后继续你的测试,请看here,它给出了如何实现的答案。无论如何,下面的其他测试(新的@Test注解方法)将继续执行。

编辑:

突出显示测试与Assert的差异。

相关问题