是否可以告诉Maven2以串行模式在新的JVM实例(fork)中执行每个jUnit测试,即逐个执行。
答案 0 :(得分:28)
你必须像解释here
那样分叉JVM<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<forkMode>always</forkMode>
</configuration>
</plugin>
也应该可以通过声明一个Sytem属性
来实现mvn -DforkMode=always test
如文档中所述:“always”为每个测试类分叉。我不知道“ pertest ”设置是否会为每次测试分叉。
感谢@Djebel指出现在已弃用forkMode
。有关于“Fork Options and Parallel Test Execution”的详细文档以及如何使用新参数forkCount
和reuseForks
,还包括以下迁移提示:
Old Setting New Setting
forkMode=once (default) forkCount=1 (default), reuseForks=true (default)
forkMode=always forkCount=1 (default), reuseForks=false
forkMode=never forkCount=0
forkMode=perthread, threadCount=N forkCount=N, (reuseForks=false, if you did not had that one set)
答案 1 :(得分:2)
标准forkMode
选项怎么样?它是否并行运行测试而不是串行测试?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>always</forkMode>
</configuration>
</plugin>
答案 2 :(得分:1)
我尝试了这些响应,但我刚刚得到的是同时运行的同一JUnit测试的几个测试函数。要为每个JUnit测试文件(我需要的)创建JVM,您必须使用以下配置(与parallel
参数不同):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<parallel>classes</parallel>
<reuseForks>false</reuseForks>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
将mattern **/*Test.java
替换为与必须在不同JVM中运行的JUnit测试相匹配的mattern。有关详细信息,请访问:Combining forkCount and parallel。