Maven的surefire插件中fork属性的配置:
Maven运行测试用例时,是通过调用maven的surefire插件并fork一个子进程来执行用例的。forkmode属性中指明是要为每个测试创建一个进程,还是所有测试在同一个进程中完成。
forkMode 可设置值有 “never”, “once”, “always” 和 “pertest”
- pretest: 每一个测试创建一个新进程,为每个测试创建新的JVM是单独测试的最彻底方式,但也是最慢的,不适合hudson上持续回归
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.3</version> <configuration> <argLine>-Xms512m -Xmx1024m</argLine> <forkMode>pertest</forkMode> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin>
2. once:在一个进程中进行所有测试。once为默认设置,在Hudson上持续回归时建议使用默认设置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.3</version> <configuration> <argLine>-Xms512m -Xmx1024m</argLine> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin>
always:在一个进程中并行的运行脚本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上,其中 threadCount:执行时,指定可分配的线程数量。只和参数parallel配合使用有效。默认:5
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.3</version> <configuration> <argLine>-Xms512m -Xmx1024m</argLine> <forkMode>always</forkMode> <parallel>methods</parallel> <threadCount>4</threadCount> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin>