我们正在开发一个基于嵌入式 Infinispan 数据网格集群的应用程序。在我们应用程序的目标环境中,数据网格的每个成员将在独立的 JVM 中运行并使用jgroup
集群将会形成(这实际上是由 Infinispan 完成的)。
为了对我们正在使用的这个数据网格进行一些自动化测试maven-surefire-plugin
(or 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"
and threadCount=4
有问题:它不会为每个类创建一个分叉,而是会多次创建同一类的分叉。因此,在我的场景中,它需要其中一个测试用例并并行运行 4 次!
注意:检查 jira bughere http://jira.codehaus.org/browse/SUREFIRE-869. 请投票!!!!
有人知道这个问题的解决方法吗?我们正在做一些努力,使用ant
但变得非常混乱。