maven本身不是一个单元测试框架,java中主流的单元测试框架为JUnit和TestNG,maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行junit或者TestNG的测试用例,这一插件就是大名鼎鼎的maven-surefire-plugin。
默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径下所有符合下列命名规约的测试类:
# **/Test*.java:任何子目录下以Test开头的Java类
# **/*Test.java:任何子目录下以Test结尾的Java类
# **/*TestCase.java:任何子目录下所有命名以TestCase结尾的Java类
想全部测试,在pom.xml目录下运行 mvn test 即可
>> 动态指定要运行的测试用例:
# mvn test -Dtest=com.springzoo.RandomGeneratorTest // 指定测试类
# mvn test -Dtest=com.springzoo.Random*Test // 通配符指定测试类
# mvn test -Dtest=com.springzoo.* // 通配符指定测试包里面的所有测试类
# mvn test -Dtest=com.springzoo.**.* // 通配符指定测试包下所有子包的所有测试类
# mvn test -Dtest=com.springzoo.**.*Random*Test // 最灵活的通配符了
>> 测试报告:
默认情况下,maven-surefire-plugin会在项目的target/surefire-reports目录下生成两种格式的测试报告:简单文本和xml格式
测试覆盖率是衡量项目代码质量的一个重要的参考指标。Cobertura是一个优秀的开源测试覆盖率统计统计(详见http://cobertura.sourceforge.net/)。maven通过cobertura-maven-plugin与之集成,用户可以使用简单命令就可以为maven项目生成测试覆盖率报告:
# mvn cobertura:cobertura
接着,打开项目目录下的target/site/cobertura/下的index.html文件,就可以查看测试覆盖率报告了,单击具体的类还可以看到精确到行的覆盖率报告。
>> 运行TestNG:
NG是Next Generation的缩写,即下一代java测试技术,在JUnit基础上增加了许多特性。先加入TestNG依赖:
<dependency> <groupId>org.testing</groupId> <artifactId>testng</artifactId> <version>6.8</version> <classifier>jdk15</classifier> <scope>test</scope> </dependency>
然后再测试中将JUnit的注解换成TestNG注解即可,除了JUnit的Before对应于TestNG的BeforeMethod,After对应AfterMethod注解以外,其他都一样。
TestNG一个很大的优势是支持测试组的概念,如下注解会将方法加入到util和medium组中:
@Test(groups={"util", "medium"})
然后再在maven-surefire-plugin的配置中配置要运行的测试组:
<plugin> <grougId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactid> <version>2.5</version> <configuration> <groups>utils,medium</groups> </configuration> </plugin>
>> 重用测试代码:
如果在项目内部想要重用某个模块的测试代码的话,可以利用maven-jar-plugin插件将测试类也打包:
<plugin> <grougId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactid> <version>2.2</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
maven-jar-plugin有两个target:jar和test-jar,前者通过内置绑定在default生命周期的package阶段运行。test-jar默认绑定生命周期阶段也为package,因此当运行mvn clean package的时候,会同时生成xxx-SNAPSHOT.jar和xxx-SNAPSHOT-tests.jar。部署到nexus上去后,下面就可以用了:
<dependency> <groupId>com.springzoo</groupId> <artifactId>account-captcha</artifactId> <version>1.0.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency>
请注意上面的type和scope
本人博客已搬家,新地址为:http://yidao620c.github.io/
相关推荐
Maven更新问题 今天Maven在更新的时候发现一直更新不成功,总结下解决方法。 在apache-maven-3.5.2/conf/setting.xml中加入以下配置即可解决 alimaven aliyun maven ...
Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project
使用eclipse整合maven时所需要使用的配置文件;只需修改文件中的本地仓库路径即可完成整合,java初学者必选。
idea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图: 折腾了好久发现配置放错地方了,...
在<plugins></plugins>中添加 <groupId>org.apache.maven.plugins <artifactId>maven-compiler-plugin <version>3.8.1 <source>1.8 <target>1.8 </plugin>
maven搭建项目:springmvc+hibernate
Maven使用tomcat8-maven-plugin插件
1: 通过配置MAVEN_HOME 和 %% %MAVEN_HOME%\bin 然后进行mvn -version 测试 掌握 -Xms 与 -Xmx的相关配置 2: Maven目录分析: 2.1: bin: 含有mvn运行的脚本 2.2: boot:含有plexus-classworlds类加载器框架 ...
Maven3实战笔记04——Maven的生命周期和插件。
系统变量:MAVEN_HOME = D:\Server\maven 用户变量:path = %MAVEN_HOME%\bin 相信大家都有配过环境变量的,详细步骤就不说了,对着把属性名和属性值配上的OK了。 打开 cmd,在里面敲:mvn -version
Over 90 hands-on recipes to successfully build and automate development life cycle tasks following Maven conventions and best practices About This Book Understand the features of Apache Maven that ...
Maven Enforcer插件-Maven:trade_mark:的爱铁拳 Enforcer插件提供了控制某些环境约束的目标,例如Maven版本,JDK版本和OS系列以及更多内置规则和用户创建的规则。 文献资料 可以在上找到更多信息。 与Maven ...
Maven的安装包,解压即安装
解决tomcat8-maven-plugin-3.0-r1655215.jar阿里云同有的问题。放到路径org\apache\tomcat\maven\tomcat8-maven-plugin\3.0-r1655215\就可以了
实用的插件,用于检查未使用的直接和已使用的间接(传递)依赖项。 用法 通过命令行临时执行 要通过命令行执行此插件的最新版本,请将其更改为maven项目。 “检查-延后” Maven目标 mvn ...
apt-maven-插件 apt-maven-plugin提供Java 6 APT功能的Maven集成。 支持的目标是 process - to process main sources test-process - to process test sources 这是配置示例 <groupId>com.mysema.maven</groupId...
Modernizer Maven插件可以检测对旧版API的使用,这些旧版API可以替代现代Java版本。 这些现代的API通常比传统的API具有更高的性能,安全性和惯用性。 例如,Modernizer可以检测使用Vector而不是ArrayList , String...
angular-maven-插件一个旨在帮助部署 angularjs 应用程序但使用 maven 作为构建工具的开发人员的插件。 到目前为止有两个目标: 模仿 grunt-html2js 将 html 模板组合成单个 javascript 文件以与 Angular.js 一起...
ImpSort Maven插件在以下位置查看此插件的文档: : 整理您的展示次数! 一个Maven插件,用于对Java源文件中的import语句进行排序。 该插件将用于其自己的版本。 它的公共API是目标和配置选项的名称。
使用遵循。 该格式无法通过设计进行配置。 如果您希望IDE保持相同的格式,则按照上的安装说明,google-java-format还包括IntelliJ和Eclipse IDE的集成。 用法 标准pom.xml 要在每个构建中自动格式化源,请添加到...