我们正在开发基于嵌入式 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>
因为这个配置应该为每个测试用例类创建一个分支(使用 4 个并行进程),所以我们创建了 4 个测试类,每个测试类都将模拟一个集群成员。在每个测试用例类中,我们将有多个线程并行运行测试方法,这要归功于 TestNG,如下所示:
@Test(threadPoolSize = 3, invocationCount = 2, timeOut = 10000, testName="Test 1")
public void testSomething() throws Throwable { ... }
问题是maven-surefire-plugin
forkMode="perthread"
andthreadCount=4
是错误的:它不会为每个类创建一个 fork,而是多次创建同一类的 fork。所以,在我的场景中,它需要一个测试用例并并行运行 4 次!!!
注意:在此处检查 jira 错误。请投票!!!!
有人知道解决方法吗?我们正在做一些努力,ant
但变得非常混乱。