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

如何在Junit 5中注册TestExecutionListener并检测是否执行了所有测试

岑俊明
2023-03-14

嗨,我正在尝试使用JUNIT 5作为框架实现集成测试,我们只想在执行所有测试之前启动所有过程一次,并在执行所有测试时停止所有过程。

我发现没有简单的方法可以做到这一点,因为我们有很多测试类,而且BeforeAll和AfterAll方法对每个测试类都有效

我发现,如果我可以注册我自己的自定义听众,我也许可以做到这一点,但不知何故,它不起作用。

import com.google.auto.service.AutoService;
        import org.junit.platform.launcher.TestExecutionListener;
        import org.junit.platform.launcher.TestPlan;

@AutoService(TestExecutionListener.class)
public class StateExecutionListener implements TestExecutionListener {

    public void testPlanExecutionStarted(TestPlan testPlan) {
        System.out.println("##########testPlanExecutionStarted "+testPlan.getRoots());
    }

    public void testPlanExecutionFinished(TestPlan testPlan) {
        System.out.println("##########testPlanExecutionStarted "+testPlan.getRoots());
    }

}

知道我们如何注册我们自己的监听器/任何其他方法来检测是否所有测试用例都被执行了吗?我使用gradle JunitPlatform来运行我的测试

共有2个答案

家志学
2023-03-14

要自动注册您的TestExecutionListener,您必须通过Java的ServiceLoader机制进行注册,如JUnit 5用户指南中所述:

https://junit.org/junit5/docs/current/user-guide/#launcher-api-listeners-custom

饶德元
2023-03-14

补充山姆的回答:

  1. 假设你有一个类MyExecutionListener实现了TestExecutionListener,创建一个文件src/main/Resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener
  2. 在文件内部放入MyExecutionListener的引用(即com.blah.x.y.z.MyExecutionListener

这方面的一个例子可以在官方的JUnit 5存储库中找到:https://github.com/junit-team/junit5/blob/bd339a570a04d86b92a89e31bbecc59475692e2c/platform-tests/src/test/resources/testservices/META-INF/services/org.junit.platform.launcher.TestExecutionListener

 类似资料:
  • 我一直在尝试使用Espresso执行一个简单的UI测试,但所有测试都失败了,但有一个相同的例外: IllegalStateException:没有注册检测!必须在注册检测下运行 这里是使用eSpresso的初学者指南。我已经发现了类似的问题,但与我最相关的问题在这里没有得到回答--我想这是因为他们没有描绘出整个画面,所以这里是我的代码。我将只显示一个测试,因为它们都失败,错误完全相同: 这里是两个

  • 我正在尝试从我的测试套件中运行所有测试,但是当我运行命令时,PHPUnit没有找到测试。我在phpunit中配置testsuite。xml。 phpunit。xml 独自创立php WebTestCase。php TestPage.php 如果我通过文件测试运行phpunit,则为,可以。

  • A) 为什么当我尝试运行应用程序时会出现此错误? 我的崩溃日志错误 Java语言lang.RuntimeException:无法启动活动java。lang.IllegalStateException:未注册任何检测!必须在注册检测下运行。在android上。应用程序。ActivityThread。在android上执行LaunchActivity(ActivityThread.java:2947)

  • 问题内容: 今天早上有一篇帖子问有多少人禁用JavaScript。然后我开始想知道可以使用什么技术来确定用户是否禁用了它。 有谁知道一些简短/简单的方法来检测是否禁用了JavaScript?我的目的是警告您,如果没有启用JS的浏览器,站点将无法正常运行。 最终,我想将它们重定向到可以在没有JS的情况下运行的内容,但是我需要将此检测作为占位符才能启动。 问题答案: 我假设你正在尝试确定是否提供Jav

  • 我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。