如何使用maven surefire插件并行运行junit套件

时间:2017-12-12 17:01:39

标签: java maven junit maven-surefire-plugin

我有一个测试套件,如下所示JunitTest1和JunitTest2,

@RunWith(Suite.class)
@SuiteClasses({ 
    com.sample.test1.class,
    com.sample.test2.class,
    com.sample.test3.class,
})

public class JunitTest1 {

}

@RunWith(Suite.class)
    @SuiteClasses({ 
        com.sample.xxx1.class,
        com.sample.xxx2.class,
        com.sample.xxx3.class,
    })

    public class JunitTest2 {

    }

我想并行运行两个testsuite但是testsuite中的测试类应该以指定的顺序运行。我在maven pom.xml中添加了以下插件,

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.20.1</version>
                <configuration>
                    <parallel>suites</parallel>
                    <threadCount>2</threadCount>
                    <!-- <forkCount>1</forkCount>
                    <reuseForks>true</reuseForks> -->
                </configuration>
            </plugin>

我已关注此链接 - http://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

我已尝试并行标记的所有可能组合,如方法,类,both,suite,suitesAndClasses,suitesAndMethods,classesAndMethods,所有但似乎没有解决我的问题。如果我使用套件,测试套件仍然按顺序运行,而对于其他选项,测试套件中的测试类以随机顺序运行

我做错了什么吗?有人可以指导我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

junit测试应该独立于彼此。 junit没有提供订购测试的方法来阻止你编写依赖于其他测试的测试。

此主题还有其他SO主题:

How to run test methods in order with Junit

http://stackoverflow.com/questions/3693626/how-to-run-test-methods-in-specific-order-in-junit4