使用maven执行单元测试总结
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的一些经验,仅用于学习交流。)
使用maven执行单元测试总结的更多相关文章
- Django单元测试总结
title: Django单元测试总结 date: 2019/6/18 17:50:00 body: [article] description: " 在本文中,笔者大致对Django单元 ...
- Maven 执行Javadoc时控制台输出乱码问题
1.0 Maven 执行Javadoc时控制台输出乱码问题 问题描述 最近项目中使用maven-javadoc-plugin生成javadoc时,myEclipse控制台乱码. 插件配置 问题分析 ...
- 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法
今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...
- idea 的Maven执行异常终止(退出代码1)
Maven execution terminated abnormally (exit code 1)译文:Maven执行异常终止(退出代码1) 我遇到这个错很迷茫 你们遇见了不要慌 只需要粘贴一行代 ...
- maven执行update命令时报org/apache/maven/shared/filtering/MavenFilteringException错误
原 maven执行update命令时报org/apache/maven/shared/filtering/MavenFilteringException错误 在eclipse中对准项目执行maven- ...
- maven执行过程中抛出的各类异常信息
价值 各类异常信息分类 举例 maven源代码的模块maven-core里的各类*Exception命名的class包含里,maven执行过程中打印的各类异常日志内容 比如如下错误 错误信息分别来自( ...
- Pod:Kubernetes最小执行单元
Pod基本概念理解 Pod是什么 Pod 是 Kubernetes 应用程序的基本执行单元,它是 Kubernetes 对象模型中创建或部署的最小和最简单的单元. 一个Pod可以包括一个或者多个容器. ...
- maven执行单元测试失败后,继续生成Jacoco&Sonar报告
为保证生成单元测试覆盖 sonarqube或者jacoco与maven集成时,如果pom文件配置了sonarqube或者Jacoco的相关配置, 那么在pom文件所在目录执行mvn clean ins ...
- maven执行报错resolution will not be reattempted until the update interval of nexus h
maven在执行过程中抛错: 引用 ... was cached in the local repository, resolution will not be reattempted until t ...
随机推荐
- javaIO流--Writer,Reader
Writer /** *<li> Writer中定义的一个重要的方法: * public void writer(String str)throws IOException; */ pac ...
- [LeetCode] Number of Atoms 原子的个数
Given a chemical formula (given as a string), return the count of each atom. An atomic element alway ...
- [LeetCode] Number Of Corner Rectangles 边角矩形的数量
Given a grid where each entry is only 0 or 1, find the number of corner rectangles. A corner rectang ...
- [LeetCode] Design Log Storage System 设计日志存储系统
You are given several logs that each log contains a unique id and timestamp. Timestamp is a string t ...
- [LeetCode] Continuous Subarray Sum 连续的子数组之和
Given a list of non-negative numbers and a target integer k, write a function to check if the array ...
- CSS常用字体属性(多出的文本隐藏,或者以省略号的形式显示)和背景样式以及背景图的2个不常用属性:background-origin和background-clip
(一)常用的字体属性: font-weight: 属性值100-900 400等于正常 700等于bold ,数值越大,越粗 font-size:字体大小,单位可以为px或者% font-famil ...
- “百度杯”CTF比赛 九月场_Code(PhpStorm)
题目在i春秋ctf大本营 打开链接是一张图片,审查元素发现关键词base64,图片的内容都以base64加密后的形式呈现,查看url形式,应该是一个文件读取的漏洞 这里我们可以采用url/index. ...
- STM32 - GPIO
买了一个STM32F4的开发板,想把上面的东西重新学一下 快速过: 一.GPIO控制 void GPIO_DeInit(GPIO_TypeDef* GPIOx); //把某一个IO口恢复到默认值 /* ...
- [SDOI 2011]黑白棋
Description 题库链接 给出一个 \(1\times n\) 的棋盘,棋盘上有 \(k\) 个棋子,一半是黑色,一半是白色.最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小 \( ...
- 51 nod 1023 石子归并 V3(GarsiaWachs算法)
1023 石子归并 V3基准时间限制:2 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一 ...