Update Time :2019-3-2 Author:要你名三千又三千 type:学习笔记
背景
Maven的重要职责之一就是自动运行单元测试。主要通过maven-surefire-plugin来进行。
Maven本身不是一个单元测试框架,Java世界中主流的单元测试框为JUnit和TestNG.
Maven所做的只是在构建执行到特定生命周期的阶段的时候。通过插件来执行JUnit或者TestNG的测试用例。
如何通过这一插件来调用测试框架
Maven-surefire-plugin 是一内置的绑定jar
maven-surefire-plugin插件可以不配置,如果又特殊版本(明确使用那个版本)可以配置。
在默认情况下,maven-surefire-plugin会自动执行测试源码路径下所有符合一组命名模式的测试类。
说明
问题:如何跳过测试
问题情形:在一些不需要运行测试的情况下,可以跳过测试。
关键字:跳过测试
方法一
配置pom中的值
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<skipTests>true</skipTests> <!--可以跳过测试-->
</configuration>
</plugin>
方法二
mvn package -DskipTests
问题:跳过测试代码的编译,同时跳过测试
mvn package -Dmaven.test.skip=true
<plugin>
<groupId>org.apache.maven.plugin</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
问题:如何指定运行某一个测试用例
问题情形:在某些情况下,测试可能只需要测试特定的一个
指定只运行两个测试用例
包含和排除某些测试用例
实现方式
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<includes>
<include>**/*Tests.java</include>
</includes>
</configuration>
</plugin>
上述代码清单中使用了** /*Tests.java 来匹配所有以Tests结尾的Java类,两个星号用来匹配任意路径,一个星号*匹配除路径风格符外的0个或者多个字符。
问题:如何排除某些测试类
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<excludes>
<exclude>**/*ServiceTest.java</exclude>
<exclude>**/TemeDaoTest.java</exclude>
</excludes>
</configuration>
</plugin><!--在这个测试插件的域内,使用configuration参数提供参数-->
测试报告
问题:如何重用测试代码?
整体思路–>打包测试代码—>将测试代码添加到依赖中
第一步:
显示声明插件Maven-jar-plugin
运行以下命令可以打包测试代码
mvn clean package
分别打包了主代码(jar)和测试代码(test-jar)。
在添加该依赖主代码的项目中添加测试依赖