如何告诉Maven2在新的JVM实例中逐个执行jUnit测试?

时间:2011-07-25 08:24:23

标签: maven-2 junit jvm

是否可以告诉Maven2以串行模式在新的JVM实例(fork)中执行每个jUnit测试,即逐个执行。

3 个答案:

答案 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”的详细文档以及如何使用新参数forkCountreuseForks,还包括以下迁移提示:

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