【问题标题】:JUnit5 afterAll callback fires at the end of each test class and not after all testsJUnit5 afterAll 回调在每个测试类结束时触发,而不是在所有测试之后触发
【发布时间】:2019-12-20 18:02:18
【问题描述】:

我有 15 个带有测试的 JUnit5 类。当我从 maven 运行它们时,afterAll() 被执行 15 次,这会导致 15 个通知发送到 Slack Webhook。还有什么我只需要发送一个通知的吗?

public class TestResultsExtensionForJUnit5 implements TestWatcher, AfterAllCallback {

    @Override
    public void afterAll(ExtensionContext extensionContext) throws Exception {
          sendResultToWebHook();
    }

    @Override
    public void testDisabled(ExtensionContext context, Optional<String> reason) {
        totalTestDisabled = totalTestDisabled + 1;
    }

    @Override
    public void testSuccessful(ExtensionContext context) {
        totalTestPassed = totalTestPassed + 1;
    }

    @Override
    public void testAborted(ExtensionContext context, Throwable cause) {
        totalTestAborted = totalTestAborted + 1;
    }

    @Override
    public void testFailed(ExtensionContext context, Throwable cause) {
        totalTestFailed = totalTestFailed + 1;
    }
}
@ExtendWith(TestResultsExtensionForJUnit5.class)
public class Random1Test {}

【问题讨论】:

    标签: junit5 junit5-extension-model


    【解决方案1】:

    最好的方法是从 JUnit 平台实现和安装TestExecutionListener,正如用户指南https://junit.org/junit5/docs/current/user-guide/#launcher-api-listeners-custom 中所述——用您的通知调用覆盖默认的testPlanExecutionFinished​(TestPlan testPlan) 方法。到此,来自所有引擎的所有测试都已完成。

    【讨论】:

    猜你喜欢
    • 2019-12-12
    • 2012-07-26
    • 2019-09-09
    • 2021-09-11
    • 2020-12-20
    • 2014-02-03
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多