JUnit5 assertAll 私有方法断言被忽略
JUnit5 assertAll private method assertions being ignored
我使用 JUnit5 assertAll 调用一个方法来执行断言,但注意到当断言应该失败时,测试实际上通过了。似乎调用如下方法被忽略了。
assertAll(
() -> jsonAssertions(actual, expectedUrl)
);
private Executable[] jsonAssertions(String actual, String expectedUrl) {
return new Executable[] {
() -> ProductAssert.assertThat(actual).urlEquals(expectedUrl)
};
}
(ProductAssert 是自定义 assertJ 断言 class)。
虽然这很好用
assertAll(
() -> ProductAssert.assertThat(actual).urlEquals(expectedUrl)
);
JUnit 5 assertAll
takes a list of Executable
个实例。
按照您现在的方式,您实际上并没有将 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)
};
}
我使用 JUnit5 assertAll 调用一个方法来执行断言,但注意到当断言应该失败时,测试实际上通过了。似乎调用如下方法被忽略了。
assertAll(
() -> jsonAssertions(actual, expectedUrl)
);
private Executable[] jsonAssertions(String actual, String expectedUrl) {
return new Executable[] {
() -> ProductAssert.assertThat(actual).urlEquals(expectedUrl)
};
}
(ProductAssert 是自定义 assertJ 断言 class)。
虽然这很好用
assertAll(
() -> ProductAssert.assertThat(actual).urlEquals(expectedUrl)
);
JUnit 5 assertAll
takes a list of Executable
个实例。
按照您现在的方式,您实际上并没有将 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)
};
}