maven-surefire-plugin的forkMode分析

简介:

  Maven的Surefire插件,使用了很长时间,尽快有时运行存在一些问题(例如before、after中的内容未执行),但大多顺利的解决了。今天亮亮在项目中遇到Surefire并发执行的问题,自己着手从实践测试和源代码的角度来分析。

附:各插件地址:http://maven.apache.org/plugins/index.html

1、实践:

 
  1. <plugin> 
  2.            <groupId>org.apache.maven.plugins</groupId>  
  3.            <artifactId>maven-surefire-plugin</artifactId>  
  4.            <configuration>  
  5.               <argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m</argLine>  
  6.               <excludes>  
  7.                   <exclude>**/TestConstants.java</exclude>  
  8.               </excludes>  
  9.               <forkMode>always</forkMode>  
  10.            </configuration>  
  11. </plugin> 

<forkMode>always</forkMode>

Maven运行测试用例时,是通过调用maven的surefire插件并fork一个子进程来执行用例的。forkmode属性中指明是要为每个测试创建一个进程,还是所有测试在同一个进程中完成。

forkMode 可设置值有 “never”, “once”, “always” 和 “pertest”。

pretest: 每一个测试创建一个新进程,为每个测试创建新的JVM是单独测试的最彻底方式,但也是最慢的,不适合hudson上持续回归

once:在一个进程中进行所有测试。once为默认设置,在Hudson上持续回归时建议使用默认设置。

always:在一个进程中并行的运行脚本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上提供这个功能,其中 threadCount执行时,指定可分配的线程数量。只和参数parallel配合使用有效。默认:5。

<forkMode>always</forkMode>

<parallel>methods</parallel>

<threadCount>4</threadCount>

实践代码:待续

 



本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/672338,如需转载请自行联系原作者

相关文章
|
8月前
|
XML Java Maven
【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南
【Maven技术专题】「知识盲区」教你如何使用深入分析Maven配置私服仓库的使用指南
137 0
|
3月前
|
Java Maven
maven打包出现没有主类的原因,详细分析并解决
本文分析了使用Maven打包Java应用时找不到或无法加载主类的问题,通常是由于未配置主类或打包时未包含依赖,并通过添加Maven插件解决了依赖问题,同时指出了JavaFX应用可能遇到的运行时组件缺失的错误。
237 0
maven打包出现没有主类的原因,详细分析并解决
|
8月前
|
JavaScript Java Apache
【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
2599 0
|
Java 测试技术 Maven
测试左移之Sonarqube maven项目分析
测试左移之Sonarqube maven项目分析
|
Java 测试技术 Maven
测试左移之Sonarqube maven项目分析
## 如果你不想在每个项目中配置 sonar 的信息,你可以在全局配置文件中配置 sonar 的通用信息。 ## 全局配置 $MAVEN_HOME/conf 或者~/.m2 路径下的 settings.xml 因为有的时候需要分布式编译,其实不太推荐全局配置这种方式。 ``` <settings> <pluginGroups> <pluginGroup>org.so
|
Oracle Java 关系型数据库
Maven实战与原理分析(二):maven实战
Maven实战与原理分析(二):maven实战
Maven实战与原理分析(二):maven实战
|
算法 IDE Java
Maven实战与原理分析(一):maven超全使用指南总结
Maven实战与原理分析(一):maven超全使用指南总结
|
2月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
81 1
从零开始学 Maven:简化 Java 项目的构建与管理