我们正在开发基于嵌入式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
做一些努力但是变得非常混乱。
答案 0 :(得分:3)
maven-surefire-plugin
错误已解决,它将在版本2.13中发布!
查看Jira票证以获取更多信息:http://jira.codehaus.org/browse/SUREFIRE-869