【问题标题】:How do I get Maven Surefire to run all classes and tests?如何让 Maven Surefire 运行所有类和测试?
【发布时间】:2018-10-10 02:57:59
【问题描述】:

我有一个运行一些测试的 Java JUnit Selenium 测试框架。有两个类,每个类有两个测试。

我已经像这样配置了 maven surefire

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <forkCount>3</forkCount>
        <reuseForks>true</reuseForks>
        <parallel>methods</parallel>
        <threadCount>100</threadCount>
        <redirectTestOutputToFile>false</redirectTestOutputToFile>
    </configuration>
    <version>2.12.4</version>
</plugin>

我希望它同时运行 4 个测试,但无论我使用 threadCountparallelfork 设置的哪种组合,我似乎只能获得 1 类价值的测试用例来运行一次。看来应该可以了,谁能提供解决方案?

【问题讨论】:

标签: java maven testing junit maven-surefire-plugin


【解决方案1】:

您想并行运行套件还是并行运行方法或测试?

我发现并行运行套件的唯一可行解决方案是设置

<property>
   <name>suitethreadpoolsize</name>
   <value>8</value>
</property>

在 pom.xml 中。其他所有组合都不起作用,因为我需要在同一个 JVM 上运行测试,而不是启动分叉进程。

【讨论】:

    【解决方案2】:

    我在 maven v3.5.0 中为surefire v2.20.1 使用以下配置

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven-surefire-plugin.version}</version>
        <configuration>
            <useUnlimitedThreads>true</useUnlimitedThreads>
            <rerunFailingTestsCount>1</rerunFailingTestsCount>
            <parallel>methods</parallel>
            <forkedProcessExitTimeoutInSeconds>2</forkedProcessExitTimeoutInSeconds>
        </configuration>
    </plugin>
    

    我相信这是可行的,因为我们的测试套件比以前快了很多,并且 Windows 报告运行进程在运行肯定时特别显着增加。

    【讨论】:

      【解决方案3】:

      对你来说可能晚了 1 年,但以防万一它可以帮助某人。

      像您一样使用 parallel=methods 将一次启动所有测试(方法),但一次启动 1 个类(顺序)。因此,在您的示例中,有 2 个测试的 2 个类,您将执行 ClassA 的所有测试,然后执行 ClassB 的所有测试。

      如果您要使用 parallel=classes,则所有类将同时启动,但一次运行 1 个测试(方法)(顺序)。因此,在您的示例中,有 2 个测试的 2 个类,您将并行启动 ClassA 的 Test1 和 ClassB 的 Test1,然后执行 ClassA 的 Test2 和 ClassB 的 Test2。

      由于您希望所有 4 个测试并行执行,因此请使用 parallel=all。 方法和类都将并行执行。

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

      注意:或者,您可能希望删除 块并将它们设置为 mvn 命令行中的参数。 例如: mvn clean test -Dparallel=all -DthreadCount=10

      问候,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-22
        • 2019-11-20
        • 2014-11-08
        • 1970-01-01
        • 2023-03-09
        • 2020-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多