Maven + Surefire / Failsafe - forkMode =“perthread”无法正常工作......解决方法?

时间:2012-06-19 09:23:23

标签: maven maven-2 infinispan surefire maven-failsafe-plugin

我们正在开发基于嵌入式Infinispan数据网格集群的应用程序。在我们的应用程序的目标环境中,数据网格的每个成员将在一个独立的JVM中运行,并且使用jgroup将形成集群(这实际上由Infinispan完成)。

为了对此数据网格进行一些自动化测试,我们使用此配置与maven-surefire-plugin(或maven-failsafe-plugin)合作:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <forkMode>perthread</forkMode>
      <threadCount>4</threadCount>
    </configuration>
</plugin>

因为这个配置应该为每个测试用例类创建一个fork(使用4个并行进程),所以我们创建了4个测试类,其中每个测试类都将模拟一个集群成员。在每个测试用例类中,我们将有几个并行运行测试方法的线程,感谢TestNG,如下所示:

@Test(threadPoolSize = 3, invocationCount = 2,  timeOut = 10000, testName="Test 1")
public void testSomething() throws Throwable { ... }

问题是maven-surefire-plugin forkMode="perthread"threadCount=4是错误的:它不会为每个类创建一个fork,而是多次创建同一个类的fork。所以,在我的场景中,它需要一个测试用例并且并行运行4次!

注意:检查jira bug here请投票!!!!

有人知道解决方法吗?我们正在使用ant做一些努力但是变得非常混乱。

1 个答案:

答案 0 :(得分:3)

maven-surefire-plugin错误已解决,它将在版本2.13中发布!

查看Jira票证以获取更多信息:http://jira.codehaus.org/browse/SUREFIRE-869