maven_SonarQube中的Maven项目的单元和集成测试报告
maven
自SonarQube 4.2起。 测试报告不是在Maven构建期间由Sonar Maven插件生成的(请参阅SonarQube的博客文章)。 因此,在Sonar Maven插件收集SonarQube服务器的信息之前,必须由另一个插件生成测试报告。 在这里,Jacoco Maven插件可以提供帮助。 它有可能生成SonarQube可以理解的测试报告。 Jacoco Maven插件更进一步,它有可能生成用于集成测试的测试报告。
在以下各节中,提出了满足以下条件的解决方案:
- Maven被用作构建工具。
- 该项目可以是多模块项目。
- 单元测试和集成测试是每个模块的一部分。 这里,集成测试是测试模块中类之间的集成的测试。
- 测试报告在单元测试报告和集成测试报告中是分开的。
下一部分的路线图是,首先显示了Maven项目结构,用于单元测试和集成测试的分离。 然后显示了Maven项目配置,其中包含单独的单元测试运行和集成测试运行。 之后,我们来看看Maven项目配置,以生成在单元测试和集成测试中分开的测试报告。 最后,SonarQube的仪表板中显示了SonarQube的配置,用于测试报告的可视化。
Maven项目结构
首先,我们看一下默认的Maven项目结构在单个模块项目中的样子。
my-app
├── pom.xml
├── src
│ ├── main
│ │ └── java
│ │ └──
│ └── test
│ └── java
│ └──
目录src / main / java包含生产源代码,目录src / test / java包含测试源代码。 我们可以将单元测试和集成测试放到这个目录中。 但是我们想将这两种类型的测试放在单独的目录中。 因此,我们添加了一个名为src / it / java的新目录。 然后将单元测试放在src / test / java目录中,并将集成测试放在src / it / java目录中,因此新的项目结构如下图所示。
my-app
├── pom.xml
├── src
│ ├── it
│ │ └── java
│ │ └──
│ ├── main
│ │ └── java
│ │ └──
│ └── test
│ └── java
│ └──
单元和集成测试运行
幸运的是,单元测试运行配置是Maven默认项目配置的一部分。 如果满足以下条件,Maven将自动运行这些测试:
- 测试位于目录src / test / java和
- 测试类名称以Test开头或以Test或TestCase结尾。
Maven在Maven的构建生命周期阶段测试中运行这些测试。
集成测试运行配置必须手动完成。 它存在可以提供帮助的Maven插件。 我们希望满足以下条件:
- 集成测试存储在目录src / it / java和
- 集成测试类名称要么以IT开头,要么以IT或ITCase结尾,
- 集成测试在Maven的构建生命周期阶段进行集成测试。
首先,Maven必须知道它必须在其测试类路径中包含目录src / it / java 。 在这里,Build Helper Maven插件可以提供帮助。 它将目录src / it / java添加到测试类路径。
<plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>1.8</version><executions><execution><id>add-test-source</id><phase>process-test-sources</phase><goals><goal>add-test-source</goal></goals><configuration><sources>src/it/java</sources></configuration></execution><execution><id>add-test-resources</id><phase>generate-test-resources</phase><goals><goal>add-test-resource</goal></goals><configuration><resources><resource>src/it/resources</resource></resources></configuration></execution></executions></plugin>
上面的代码段必须插入到项目根pom中的<project> <build> <plugins>部分。
Maven的构建生命周期包含一个称为集成测试的阶段。 在此阶段,我们要运行集成测试。 因此,我们将Maven故障安全插件绑定到阶段集成测试:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-failsafe-plugin</artifactId><version>2.13</version><configuration><encoding>${project.build.sourceEncoding}</encoding></configuration><executions><execution><id>failsafe-integration-tests</id><phase>integration-test</phase><goals><goal>integration-test</goal><goal>verify</goal></goals></execution></executions>
</plugin>
同样,以上代码片段也必须插入到项目根pom中的<project> <build> <plugins>部分。 然后,当Maven故障保护插件的类名称以IT开头或以IT或ITCase结尾时,它们会自动运行集成测试。
测试报告生成
我们想使用Jacoco Maven插件生成测试报告。 它应该生成两个测试报告,一个用于单元测试,一个用于集成测试。 因此,该插件必须要准备两个单独的代理。 然后他们在测试运行期间生成报告。 Maven的构建生命周期包含自己的阶段,可以在测试阶段之前进行准备(测试和集成测试)。 测试阶段的准备阶段称为过程测试类,而集成测试阶段的准备阶段称为集成前测试。 在这两个阶段中,我们绑定了Jacoco Maven插件,因此,此插件的配置类似于以下代码片段(同样,它是<project> <build> <plugins>一节的一部分):
<plugin><groupId>org.jacoco</groupId><artifactId>jacoco-maven-plugin</artifactId><version>0.7.2.201409121644</version><executions><execution><configuration><destFile>${sonar.jacoco.reportPath}</configuration><id>pre-test</id><phase>process-test-classes</phase><goals><goal>prepare-agent</goal></goals></execution>
<!-- we want to execute <span class="hiddenSpellError" pre="execute " data-mce-bogus="1">jacoco</span>:prepare-agent-integration in test phase,-->
but before executing maven failsafe plugin --><execution><configuration><destFile>${sonar.jacoco.itReportPath}</destFile></configuration><id>pre-itest</id><phase>pre-integration-test</phase><goals><goal>prepare-agent-integration</goal></goals></execution></executions>
</plugin>
配置元素destFile是应将测试报告存储到的位置的路径。 使用属性$ { sonar.jacoco.reportPath}和$ { sonar是很重要的。 jacoco.itReportPath}。 SonarQube使用这些属性查找可视化的测试报告。
现在,我们可以运行目标mvn install,并且我们的项目已构建为包含单元和集成测试,并生成两个测试报告。
SonarQube测试报告可视化
现在,我们想在SonarQube中可视化我们的测试报告。 因此,成功构建后,我们必须在我们的项目中运行Sonar Maven 3插件(命令mvn sonar:sonar )。
在SonarQube仪表板中打开项目时,我们仅看到每个模块的单元测试的报告。 原因是必须在SonarQube中分别配置集成测试的报告可视化。 SonarQube文档中很好地描述了这些配置步骤。
概要
该博客描述了如何在Maven构建期间为单元测试和集成测试生成测试报告。 在GitHub上,我托管了一个示例项目,演示了所有配置步骤。 作为技术环境,我使用
- Maven的3.2.5
- Maven插件:
- Maven Surefire插件
- SonarQube 4.5.1
- Java 7
链接
- SonarQube的博客文章SonarQube中的单元测试执行
- Jacoco Maven插件项目站点
- Maven构建生命周期简介
- Maven故障安全插件项目站点
- 构建助手Maven插件项目站点
- SonarQube文档,有关Java Projec集成测试的代码覆盖率
- GitHub上的示例Maven项目
翻译自: https://www.javacodegeeks.com/2015/05/unit-and-integration-test-reports-for-maven-projects-in-sonarqube.html
maven
maven_SonarQube中的Maven项目的单元和集成测试报告相关推荐
- SonarQube中的Maven项目的单元和集成测试报告
自SonarQube 4.2起. 测试报告不是在Maven构建期间由Sonar Maven插件生成的(请参阅SonarQube的博客文章 ). 因此,在Sonar Maven插件收集SonarQube ...
- IDEA中创建maven项目后解决main文件夹下目录不全的问题
IDEA中创建maven项目后解决main文件夹下目录不全的问题 参考文章: (1)IDEA中创建maven项目后解决main文件夹下目录不全的问题 (2)https://www.cnblogs.co ...
- 在Eclipse中编译maven项目出的问题
在Eclipse中编译Maven项目,运行 jetty:run 指令的时候会出错,在 JRE选项卡中加入: -Dorg.mortbay.util.URI.charset=GBK -Xms512m -X ...
- Eclipse中导入Maven项目后没有run on server
场景 在Eclipse中导入Maven项目后,想要运行时,却没有run on server 解决 右击项目--properties--project facets--勾选Dynamic Web Mod ...
- 【MAVEN】如何在Eclipse中创建MAVEN项目
目录结构: contents structure [+] 1,Maven简介 2,Maven安装 2.1,下载Maven 2.2,配置环境变量 2.3,测试 3,Maven仓库 3.1,Maven仓库 ...
- idea中新建maven项目缺少src目录的根本解决方法(适合萌新 少走弯路)
idea中新建maven项目缺少src目录的根本解决方法(适合萌新 少走弯路) 参考了很多博客,基本都是让在setting下的runner 添加-DarchetypeCatalog=internal参 ...
- Eclipse中对maven项目进行打包
在Eclipse中对maven项目进行打包,发现三种方式: 第一种方法:cmd窗体中使用maven命令进行打包 (此方式环境变量必须配置maven环境) 1.选中项目右键 --> Show in ...
- jenkins中配置maven项目
文章目录 前言 一.全局工具配置 二.配置Publish Over SSH(提前在插件管理中安装Publish Over SSH插件) 三.git认证配置 四.项目配置 前言 记录jenkins中配置 ...
- idea中的Maven项目怎么配置Tomcat部署
idea中的Maven项目怎么配置Tomcat部署 1. 开篇简介 2. 开始部署 3. 总结 1. 开篇简介 嗨,大家好! 今天,我想给大家分享的是:如何在idea中的Maven项目怎么配置Tomc ...
最新文章
- QT 实用代码片段 (持续更新)
- 高并发场景下创建多少线程才合适?一条公式帮你搞定!!
- “365算法每日学计划”:05打卡-图解冒泡排序(多解法)
- Android中实现不同文字颜色和图文混排的Span总结
- Linux 查看端口占用情况 并 结束进程
- Oracle Spatial-元数据及SDO_GEOMETRY
- MySQL MHA 安装
- c语言全角半角转换函数,全角半角转换函数(示例代码)
- 6阶群的非平凡子群_离散数学复习笔记
- ssh 远程登录_C.4 彻底解决-新版本Sentaurus TCAD的SSH远程登录问题!!!
- Linux的Namespace与Cgroups介绍
- linux qt 生成word报告_Qt 生成word、pdf文档
- 游戏开发unity资源管理系列:查看AssetBundle的工具-AssetStudio
- location.hostnbsp;与nbsp;locat…
- 老婆反问我:“是不是也算个凤凰男啊?”
- “毒液” 高危漏洞背后的技术较量
- Alitum Designer 出现警告:[Warning] xxx.SchDoc Compiler Net xxx has no driving source
- 04741计算机网络原理2018年版-第八章 网络安全基础 知识要点
- Android代理模式(静态代理,动态代理,Retrofit代理模式分析)
- dom4j生成xml节点内容换行
热门文章
- __proto__(隐式原型)与prototype(显式原型)
- HubbleDotNet 开源全文搜索数据库项目--为数据库现有表或视图建立全文索引(三) 多表关联全文索引模式...
- Linux下实现apache代理tomcat
- LINUX 下 WEBlogic集群的搭建-01
- 利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
- IOS中UITableview中封装九宫格
- SQL查询前10条记录(SqlServer/mysql/oracle)[语法分析]
- 常用汉字的unicode 编码
- javascript es6 箭头函数 简介
- goland 关闭 自动移除未使用的包 自动添加需要的包