如何使用Surefire + Maven执行超过2个线程?

时间:2012-10-30 22:09:58

标签: testing parallel-processing maven-3 maven-surefire-plugin

我无法使用Maven + Surefire组合一次执行两个以上的线程。我已经尝试了一些threadCount,perCoreThreadCount和useUnlimitedThreads设置的组合,但是永远不会比两个线程更好。参见附页截图:将有~12个Firefox窗口,但一次只有两个“驱动”。

enter image description here

我的机器有4个2.6 Ghz i7内核,所以它不像我应该达到硬件限制。

以下是Surefire配置之一的示例:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.7.2</version>
            <configuration>
                <includes>
                    <include>**/*Test*.*</include>
                </includes>
                <threadCount>10</threadCount>
                <perCoreThreadCount>true</perCoreThreadCount>
                <parallel>classes</parallel>
            </configuration>
        </plugin>

对于我的测试,我正在使用Scala包装在JUnit运行器中。每个测试都在自己的类中。我认为我的JUnit是4.10,Maven 3.04。

2 个答案:

答案 0 :(得分:0)

尝试将MAVEN_OPTS = -Dmaven.artifact.threads = 10定义为Maven环境变量。

执行mvn时使用参数“-T”。

示例:

mvn -T 4 clean install #Build with 4 threads

mvn -T 1C每个cpu核心清理安装#1个线程

mvn -T 1.5C clean install#1.5 thread per cpu core

由于您使用的是Maven 3.x,因此可以指定线程数甚至核心数。

有关详细信息,请查看以下链接:https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3

希望它有所帮助!

答案 1 :(得分:0)

FWIW我有类似的问题。事实证明我试图从不同的JUnit类别运行测试类,但是与并行设置。

每个类别中的类确实是并行执行的,但类别是按顺序执行的。

我最终将故障安全配置更新为

<configuration>
    <parallel>suitesAndClasses</parallel>                        
    <useUnlimitedThreads>true</useUnlimitedThreads>
   <threadCountClasses>4</threadCountClasses>
</configuration>