有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JUnit5 assertAll私有方法断言被忽略

使用JUnit5 assertAll,我调用了一个方法来执行断言,但注意到当断言失败时,测试实际上通过了。调用下面这样的方法似乎被忽略了

assertAll(
    () -> jsonAssertions(actual, expectedUrl)
);

private Executable[] jsonAssertions(String actual, String expectedUrl) {
    return new Executable[] {
        () -> ProductAssert.assertThat(actual).urlEquals(expectedUrl)
    };
}

(ProductAssert是一个自定义assertJ断言类)


不过这很管用

assertAll(
    () -> ProductAssert.assertThat(actual).urlEquals(expectedUrl)
);

共 (1) 个答案

  1. # 1 楼答案

    JUnit 5^{}获取^{}实例的列表

    现在这样做,实际上并不是将Executable列表传递给assertAll。不要将匿名方法传递给assertAll,而是直接传递jsonAssertions的结果:

    @Test
    private void test() {
        assertAll(jsonAssertions(actual, expected));
    }
    
    private Executable[] jsonAssertions(String actual, String expected) {
        return new Executable[] {
            () -> assertThat(actual).isNotNull(),
            () -> assertThat(expected).isNotNull(),
            () -> assertThat(actual).isEqualTo(expected)
        };
    }