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

并行JUnit测试不执行关机钩子

谭梓
2023-03-14
@Test
public void test()
{
    Runtime.getRuntime().addShutdownHook(new Thread()
    {
        @Override
        public void run()
        {
            System.out.println("Test clean up triggered");
        }
    });
}

以下是我的POM的相关部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <parallel>classes</parallel>
        <threadCount>10</threadCount>
    </configuration>
</plugin>

编辑:当我在@beforeClass方法中添加关闭挂钩时,问题就解决了。当我将它添加到@test方法中时,我遇到了问题。我希望能够在任何时候添加钩子。

共有1个答案

何浩荡
2023-03-14

关机钩子实际上是调用的,我认为问题来自与Maven关机钩子相关联的system.out.println调用。

直接使用Eclipse进行测试,我得到了以下结果:

Test clean up triggered

并尝试稍微不同的测试版本:

    @Test
    public void test()
    {
        System.out.println("Testing");
        Runtime.getRuntime().addShutdownHook(new Thread()
        {
            @Override
            public void run()
            {
                try {
                                Files.createFile(Paths.get("test1"));
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
            }
        });

        assertTrue(true);   
    }
    null
 类似资料:
  • 当在我的pom.xml中启用强制使用JUnit47提供程序时,我得到: pom.xml如下所示

  • 我们用Rest Assured和JUnit 5编写了API测试,并试图并行运行测试,因为测试之间没有依赖关系。我们已经尝试了JUnit 5的实验性并行执行,方法是设置: …但我们已经看到,通常当测试失败时,测试报告中不包含它们的输出。 这是已知问题吗?有什么变通方法吗?

  • 有4个类包含测试< code>TestClass1、TestClasss2、TestClass3、TestClass4。您需要创建2个测试套件,每个套件将包含2个类,并使用< code>Maven surefire插件并行运行它们。 我创建了两个包含以下内容的xml文件: 和 也添加到: 接下来,我用命令< code>mvn clean test运行项目,项目将要运行,但是测试没有开始。我哪里错了

  • 我正在将并行执行引入我的testNG套件中。当我将“parallel”设置为“tests”时,两个浏览器打开,两个测试的第一个类同时开始--这是我所期望的。当我将其设置为“classes”时,我希望第一个测试中的两个类同时开始,但是只有一个浏览器打开,第一个类中的第一个方法执行,然后用第二个类中的第一个方法打开一个新的浏览器,依此类推。谁能告诉我我做错了什么? 下面是我的xml文件:

  • 我正在一个硒自动化项目中运行回归测试。测试是用 JUnit 5.5.1 编写的。没有 Surefire 或故障安全插件(测试不在 src/测试/java 下,它们位于 src/主/java 下,因为不是单元测试)。 问题是,当我使用.bat文件(执行mvn exec:java…)运行代码时,没有一个测试被执行,我不确定我的配置是否完全正确。在最坏的情况下,这是我使用的JUnit版本的一个bug(我