2016-02-23 223 views
2

我想并行运行我的集成测试,以便: *每个测试方法由不同的JVM *运行,每使用一个线程运行Maven集成测试

后阅读the surefire docs我想用的:

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

,但我的测试中出现失败(当然,只运行mvn test运行它们按顺序不会失败)

任何我DEA如何实现多进程单线程?

+0

Offtop:你为什么需要这个? – coolguy

+0

我有一些遗留代码需要改进其性能。而其中一些代码不是线程安全的,我的城市只有50%的加载。 – Amnon

+1

首先,我会建议理解为什么他们失败的原因,如果这些测试是单元测试,他们应该工作......也许你正在做不干净的单元测试更多的集成测试... – khmarbaise

回答

0

Surefire插件在forkCount单独JVM进程执行不同的类,使用每个JVM threadCount线程和如果parallel=methods然后每个方法将给出一个线程。换句话说,每个分叉被赋予一个类,每个方法被赋予一个线程。您不能在方法分叉之间映射。

Surefire's page, paragraph on combining forkCount and parallel

然而,可以使用并行=方法:类在forkCount并发进程执行,则每个处理可以使用THREADCOUNT线程并行地执行一个类的方法。

TestNG的在案件以下标注它可以帮助:
@Test(threadPoolSize = 3, invocationCount = 6, timeOut = 1000)

编辑:刚刚看了评论:
你必须让你的单元测试纠正,然后再加速执行向上。