【发布时间】:2012-06-21 07:43:00
【问题描述】:
我们正在开发基于嵌入式 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" 和 threadCount=4 有问题:它不会为每个类创建一个 fork,而是多次创建同一类的 fork。所以,在我的场景中,它需要一个测试用例并并行运行 4 次!!!
注意:检查 jira 错误 here。 请投票!!!
有人知道解决方法吗?我们正在使用ant 做一些努力,但变得非常混乱。
【问题讨论】:
-
我发现了
maven-surefire-plugin的问题!去codehous中的jira bug查看解决方案! -
你应该发布答案并接受它,没有答案的问题没有意义。
-
我发现了 maven-surefire-plugin 的问题,这并不意味着我修复了它(我不是 surefire 项目的提交者)。出于这个原因,我认为解决方法可能会有所帮助
标签: maven maven-2 infinispan surefire maven-failsafe-plugin