Maven专题4——Maven测试
Java世界的主流测试框架是JUnit和TestNG,Maven在构建执行到特定生命周期阶段的时候,通过插件执行JUnit和TestNG的测试用例。
Maven执行测试的插件是maven-surefire-plugin
,即测试运行器(Test Runner)。
1. maven-surefire-plugin
1.1 扫描规则
maven-surefire-plugin
默认的在测试源码目录(src/test/java
)扫描测试类的规则是:
- 任何以
Test
开头的类 - 任何以
Test
结尾的类 - 任何以
TestCase
结尾的类
1.2 包含和排除测试
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>x.x.x</version>
<configuration>
<includes>
<include>**/*Tests</include> <!-- 包括所有以Tests为后缀的类 -->
</includes>
<excludes>
<exclude>**/*TempDaoTests</exclude> <!-- 排除所有以TempDaoTests为后缀的类 -->
</excludes>
</configuration>
<plugin>
1.3 动态指定测试目标
# 动态指定执行YourTargetTests类的测试
mvn test -Dtest=YourTargetTests
# 动态指定执行以Your开头,以Tests结尾的所有测试类
mvn test -Dtest=Your*Tests
# 使用逗号分隔多个待执行的测试类
mvn test -Dtest=YourTargetTests,My*Test
1.4 跳过测试
1.4.1 Maven命令参数
-DskipTests
只跳过测试执行,不跳过测试编译;-Dmaven.test.skip=true
同时跳过测试的运行和测试编译。-Dtest -DfailIfNoTests=false
,不指定测试类,同时抑制没有测试类时的报错,相当于一种跳过测试的方法。
1.4.2 插件配置
- 跳过测试执行阶段
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>x.x.x</version>
<configuration>
<skipTests>true<skipTests>
</configuration>
<plugin>
- 同时跳过测试编译和测试执行
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>x.x.x</version>
<configuration>
<skipTests>true<skipTests>
</configuration>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>x.x.x</version>
<configuration>
<skipTests>true<skipTests>
</configuration>
<plugin>
1.5 测试报告
maven-surefire-plugin
插件在项目的target/surefire-reports
目录生成:
- 简单文本报告(TXT)
- 详细报告(XML)
1.5.1 简单文本格式
内容包括:
- 总测试用例数
- 失败个数(执行结果与预期不符)
- 出错个数(执行过程中发生了非预期的异常)
- 跳过个数
- 执行测试总耗时
1.5.2 详细报告
Eclipse等IDE的JUnit插件,集成了可视化阅读详细报告XML文件的功能。
2. cobertura-maven-plugin
与测试覆盖率报告。
2.1 常用命令
mvn cobertura:cobertura
2.2 覆盖率报告
覆盖率报告生成在项目的target/site/cobertura
目录,点击其中的index.html
即可查看所有的覆盖率信息。
3 maven-jar-plugin
插件与测试代码重用
maven-jar-plugin
插件有两个目标,分别是jar
和test-jar
.
jar
内置绑定在default
生命周期的package
阶段test-jar
没有内置绑定,如果开发者需要打包测试代码,需要显式绑定,一旦显式绑定,其默认的绑定生命周期阶段是package
。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>x.x.x</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
<goals>
<execution>
</executions>
<plugin>
这样,执行mvn package
时就会将测试代码一同构建到目标Jar中,如果被打包的测试代码中提供了一些测试工具类,就可以供上层代码使用了。
Maven专题4——Maven测试的更多相关文章
- 构建简单的Maven工程,使用测试驱动的方式开发项目
构建简单的Maven工程很简单,这里写这篇随笔的原因是希望自己能记住几个小点. 一.安装Maven 1.下载maven:https://maven.apache.org/download.cgi 2. ...
- eclipse使用maven打包时去掉测试类
eclipse使用maven打包时去掉测试类 在pom.xml文件中增加如下配置: <plugin> <groupId>org.apache.maven.plugins< ...
- Maven取消编译自动测试
Maven取消编译自动测试 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...
- Maven 专题(四):什么是Maven
1 Maven 简介 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理.Maven 这个单词的本意是:专家,内行.读音是['meɪ ...
- Maven 专题
目录: Maven的安装 Eclipse安装Maven插件 Nexus私服搭建 Maven+Nexus配置 发布自己的构件(至Nexus) 创建maven多模块工程group 整理中[...] 先放一 ...
- Maven 专题(八):配置(一)常用修改配置
修改配置文件 通常我们需要修改解压目录下conf/settings.xml文件,这样可以更好的适合我们的使用. 此处注意:所有的修改一定要在注释标签外面,不然修改无效.Maven很多标签都是给的例子, ...
- Maven 专题(三):为什么要用Maven
1 真的需要吗? Maven 是干什么用的?这是很多同学在刚开始接触 Maven 时最大的问题.之所以会提出这个问题, 是因为即使不使用 Maven 我们仍然可以进行 B/S 结构项目的开发.从表述层 ...
- maven之一:maven安装和eclipse集成
maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...
- maven系列之一maven安装和与IDE集成
第一部分:maven的基本信息和安装,配置 maven是一个项目构建和管理的工具,提供了帮助管理 构建.文档.报告.依赖.scms.发布.分发的方法.可以方便的编译代码.进行依赖管理.管理二进制库等 ...
随机推荐
- 2021年最新字节跳动Android面试真题解析
概述 时间过得是真TM快,回想自己是16年从学校毕业,现在是出来工作的第五个年头啦.在不同的大小公司都待过,就在前段时间顺利的完成了一次跳槽涨薪,面试了几家公司,最终选择了字节跳动.今特此前来跟大家进 ...
- Android:Android Studio导入OpenCV(Android项目)
在使用OpenCV之前,Android必须先下载ndk,因为OpenCV使用了native代码,这里建议Android Studio创建C++项目来写OpenCV的内容 1.首先在官网下载OpenCV ...
- 代码部署:使用 nginx 代理到云服务器 ( windows 系统)
在部署之前我们首先要了解什么是nginx,它又可以做什么 Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50,00 ...
- 编程熊讲解LeetCode算法《二叉树》
大家好,我是编程熊. 往期我们一起学习了<线性表>相关知识. 本期我们一起学习二叉树,二叉树的问题,大多以递归为基础,根据题目的要求,在递归过程中记录关键信息,进而解决问题. 如果还未学习 ...
- mybatis generator的generatorConfig.xml配置详解
generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ge ...
- SQL 练习33
查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名 SELECT Student.SId,Student.Sname,Cname,score from Student,Course,S ...
- 容器平台(kubernetes)架构设计
一眨眼距离上次发文好几年过去了,今天翻未读邮件看到博客有文章回复,猛然想起将博客遗忘在角落好几年了,赶紧访问博客.找回密码.翻翻文章,想写点什么但是又不知道从哪下手,N年前的第一篇文章是一个crm设计 ...
- ASP.NET Core教程:ASP.NET Core程序部署到Linux
一.前言 这篇文章我们将讲解如何将ASP.NET Core 程序部署到Linux.这里我们使用的是虚拟机里面安装的Centos7.这里的ASP.NET Core程序,以上篇文章中发布的框架依赖文件为例 ...
- C++11 unique_ptr智能指针详解
在<C++11 shared_ptr智能指针>的基础上,本节继续讲解 C++11 标准提供的另一种智能指针,即 unique_ptr 智能指针. 作为智能指针的一种,unique_ptr ...
- GIT基础篇,配置账号及命令查看以及帮助命令
提交用户名和邮件地址 1 安装完Git首先要设置你的用户名称与邮件地址.每一个Git的提交都会使用这些信息,并且它会写入到你的每一次提交中. 2 git config --global user. ...