java 在Junit 5@AfterAll中执行Assert

aydmsdu9  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(130)

我试图在mocking框架中添加一个功能,当有一个方法被存根化但从未被实际调用时,测试类会失败,即。要么测试包含太多的stubbing,要么测试的代码没有遵循预期的路径。
我已经可以进行检查了,我计划在JUnit扩展实现的@AfterAll方法中进行检查,如下所示:

@ExtendWith(MyExtension::class)
class TestClass {

    @Test
    fun myTest() {
        // stub a function
        // run some test code
    }
}
class MyExtension : AfterAllCallback {
    override fun afterAll(context: ExtensionContext) {
        if (not all stubbed methods have been called) {
            throw AssertionError("Something")
        }
    }
}

但是,在afterAll主体中抛出AssertionError不会导致测试失败。
这对我来说是有意义的,因为afterAll应该在所有测试之后执行,当测试结果已经计算出来时,但是我想知道是否有一种方法可以在所有测试执行之后触发测试类失败。

guykilcj

guykilcj1#

这似乎是您使用的IDEA版本的特定问题,因为我可以确认IJ 2023.1.1的行为符合预期:

相关问题