当前位置: 首页 > 知识库问答 >
问题:

JUnit5 之后所有回调在每个测试类结束时触发,而不是在所有测试之后触发

柯甫
2023-03-14

我有15节6月5日的课要考试。当我从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 {}

共有1个答案

壤驷心思
2023-03-14

最好的方法是从JUnit平台实现并安装TestExecutionListener,如用户指南中所述https://junit.org/junit5/docs/current/user-guide/#launcher-api侦听器自定义--覆盖默认的<code>testPlanExecutionFinished​(TestPlan TestPlan)方法与通知调用。在此,所有发动机的所有测试均已完成。

 类似资料:
  • 对于测试证据,我想将我写到特定目录中的所有测试工件(例如服务器调用和响应)存档。我得到了压缩目录的方法,但我没有找到合适的地方来执行它。 测试生命周期回调似乎不是正确的位置,因为@AfterAll在每个测试类之后被调用,但是存档应该在所有测试类中的所有测试终止后生成。 在阅读了诸如如何在模块中执行之前和之后分别编码一次的帖子之后?似乎没有希望在jUnit中执行调用。 我找到了一个扩展TestLau

  • 问题内容: 在我的项目中,我必须在所有测试之前进行一些存储库设置。这是使用一些棘手的静态规则完成的。但是,在所有测试之后,我不知道如何进行清理。我不想保留一些不可思议的静态数字来引用所有测试方法的编号,我应该一直保持这种状态。 最受赞赏的方法是添加一些将在所有测试后调用的侦听器。JUnit4中已经有用于它的任何接口吗? 编辑:这与@BeforeClass和@AfterClass无关,因为我必须知道

  • 方法和测试位于一个类中,例如 下面是我的testng.xml的示例,其中包含了包含功能测试的包 UPD.post修改后的代码中包含AfterTest。我只使用before/aftermethod注释

  • 我在下面贴了一个简单的代码,为什么@BeforeAll带注释的方法和静态块在参数化测试之后运行?在这种情况下,我如何在Junit5中加载参数化测试之前注册一个公共对象或数据库连接,或者利用@BeforeAll或static block的功能。(参考:Junit4中参数化测试的等效代码在所有测试之前运行静态块。但不是@BeforeClass注释方法。) utils init() 正在清理。。。 ut

  • 基本的问题是,当我将JUnit测试分组为套件或套件组时,所有测试的< code>@Parameters方法在单独的套件或测试执行之前首先运行。我们的设置如下: 我们有多个测试类文件,每个文件都有包含实际测试的静态内部类。 以此类推,,等。现在,为了将所有这些测试套件收集到一个更大的集合中,我创建了一个更大型的测试套件,如下所示: 但是,无论我是运行主套件,还是,所有内部类的方法都在所有方法或实际测