maven本身没有单元测试框架,但是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件可以调用Junit3、Junit4、TestNG等Java流行测试框架完成单元测试。

在pom中加入Junit依赖

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
</dependency>

约定优于配置

maven的default生命周期的test阶段与maven-surefire-plugin插件的test插件目标内置绑定。默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认:src/test/java)下的所有符合一组命名规则的测试类。该命名规则如下:

1. **/Test*.java 任何子目录下所有命名以Test开头的java类
2. **/*Test.java 任何子目录下所有命名以Test结尾的java类
3. **/*TestCase.java 任何子目录下所有命名以TestCase结尾的java类

跳过测试

pom中配置

  • skipTests配置,跳过测试执行阶段
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
 </plugin>
  • skip配置,跳过测试执行阶段
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skip>true</skip>
    </configuration>
 </plugin>

mvn命令行中加入参数

  • skipTests
mvn clean package -DskipTests=true
  • maven.test.skip(需要注意的是,maven-compiler-plugin插件的testCompile插件目标和maven-resources-plugin插件的testResources插件目标也有这个参数,如果使用-Dmaven.skip.test=true,则跳过了测试资源文件处理、测试代码编译和执行三个阶段。关于maven的生命周期和插件的详细描述,请参考我的另两篇博客:maven生命周期详解Maven插件详解)
mvn clean package -Dmaven.test.skip=true

说明:此处的“maven.test.skip”为maven-surefire-plugin插件的test插件目标的参数的表达式,其对应的插件目标参数为上面pom中配置的skip参数。并不是所有插件目标参数都有表达式,也就是说,一些插件目标参数只能在pom中配置。关于插件目标参数和其表达式的详细信息,可以去maven官网的对应插件章查询,地址为:maven官网插件。maven-surefire-plugin中skip的描述如下所示(请放大查看☺):



跳过测试命令执行情况请参考我的另一篇博客:maven跳过单元测试的两个参数区别

动态指定要执行的测试用例

使用test参数可以在命令行指定要执行的测试用例的类名。

1. mvn test -Dtest=demomavenTest 指定单个测试执行类
2. mvn test -Dtest=demo*Test 指定所有以demo开头以Test结尾的测试类
3. mvn test -Dtest=demo*Test, heheTest 以逗号隔开多个指定的测试类

注意:当test参数没有值时,默认构建会失败。此时加上failIfNoTests=false,即使没有测试也不报错:

mvn test -Dtest -DfailIfNoTests=false 

上述命令不会执行任何测试,构建也能顺利完成。这也是一种跳过所有测试完成构建的方法。

包含与排除测试用例

pom中可以配置includes和excludes参数来包含和排除指定的测试类:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <includes>
          <include>**/*Tests.java</include>
        </includes>
        <excludes>
          <exclude>**/*ServiceTest.java</exclude>
          <exclude>**/ServiceTest*.java</exclude>
        </excludes>
    </configuration>
 </plugin>

(本文是看了大神徐晓斌的maven3 in action一书的相关章节之后的读书笔记和自己平时使用maven的一些经验,仅用于学习交流。)

最新文章

  1. 6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器
  2. Eclipse创建Maven时提示错误could not resolve archetype
  3. ElasticSearch的各种服务的URL
  4. SQL SERVER2012中使用游标来备份数据库
  5. android开发经验
  6. java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
  7. 有用的jQuery布局插件推荐
  8. 重操JS旧业第四弹:Date与Global对象
  9. [SignalR]初步认识以及安装
  10. NGINX下配置CACHE-CONTROL
  11. BZOJ3224/洛谷P3391 - 普通平衡树(Splay)
  12. 在C#的控制台应用中使用Dapper链接MySQL并执行一些增删改查
  13. neutron--ml2 plugin
  14. flutter 访问网页+http请求
  15. C语言实现链栈
  16. oracle-查询-时间条件查询
  17. cnblogs博客申请完毕,以后再这里安家落户
  18. 电子地图/卫星地图下载并转存为jpg图片
  19. mariadb审计日志通过 logstash导入 hive
  20. Java Maven项目的一些补充

热门文章

  1. 走在spring的路上。。。。
  2. Python数据抓取_BeautifulSoup模块的使用
  3. [USACO 08DEC]Secret Message
  4. HDU - 3037:Saving Beans
  5. hdu 5437Alisha’s Party(优先队列)
  6. oracle安装过程和创建本地数据库
  7. Python【第五课】迭代器,生成器,数据序列化
  8. gcc编译器的工作流程
  9. Vue2学习(2)
  10. 查询优化--ORDER BY查询优化