JUnit5中assertEquals断言为何仅首个失败信息显示?
为什么JUnit 5中首个断言失败后,后续断言的失败信息不展示?
这是因为JUnit的断言默认遵循失败即终止的执行逻辑:当第一个assertEquals执行失败时,会直接抛出AssertionError异常,整个测试方法会立刻停止运行,后面的两个断言根本没有机会被执行,所以自然看不到它们的失败信息。
如果想让所有断言都执行并展示全部失败结果,可以试试这两种方案:
- 用JUnit 5提供的
assertAll方法包裹所有断言,它会执行所有传入的断言逻辑,最后汇总所有失败信息:
@Test @DisplayName("This is just a simple JUnit 5 test") void testSimple() { assertAll( () -> assertEquals(2, 3, "this is the 1st assertEquals"), () -> assertEquals(4, 5, "this is the 2nd assertEquals"), () -> assertEquals(5, 6, "this is the 3rd asswerEquals") ); }
- 拆分测试方法,把每个断言单独写成一个独立的
@Test方法,这样每个测试的失败信息都能单独展示,也更贴合单元测试“一个测试验证一个点”的最佳实践。
内容的提问来源于stack exchange,提问作者Grateful
相关产品推荐
相关产品推荐

