在多进程单线程模式下运行maven集成测试

时间:2016-02-23 14:29:45

标签: java maven junit multiprocessing

我想并行运行我的集成测试,以便: *每个测试方法由不同的jvm运行 *并且每个都使用单个线程

阅读the surefire docs之后我想到了:

mvn test -DforkCount=2 -DreuseForks=false -Dparallel=methods -DthreadCount=1

但我的测试似乎失败了(当然,只运行mvn test顺序运行它们不会失败)

知道如何实现多进程单线程吗?

1 个答案:

答案 0 :(得分:0)

Surefire插件在forkCount个单独的JVM进程中执行不同的类,每个JVM使用threadCount个线程,如果parallel=methods则每个方法都会被赋予一个线程。换句话说,每个 fork 都有一个类,每个方法都有一个线程。您无法在方法分支之间进行映射。

来自Surefire's page, paragraph on combining forkCount and parallel

  

但是,您可以使用parallel =方法:在forkCount并发进程中执行类,然后每个进程可以使用threadCount线程并行执行一个类的方法。

TestNG 有以下注释,以防它可以提供帮助:
@Test(threadPoolSize = 3, invocationCount = 6, timeOut = 1000)

编辑:刚看完评论:
你必须先让你的单元测试正确,然后加快执行速度。