此示例说明如何使用Maven和Sonar生成单元测试和集成测试的覆盖率。 它使用非常简单的技术,只需10-15分钟即可在任何现有的Maven构建中运行。 它可用于单元,集成,ATDD或任何其他类型的测试套件。 覆盖率结果显示在Sonar中。

有什么事吗?

我的前一篇文章展示了如何使用JUnit类别轻松拆分单元和集成测试套件。
http://johndobie.blogspot.com/2012/04/unit-and-integration-tests-with-maven.html

下一步的逻辑步骤是能够查看每个测试套件的指标。
本示例说明了如何使用Jacoco和Sonar进行此操作。

示例代码在这里。

svn co https://designbycontract.googlecode.com/svn/trunk/examples/maven/categories-sonar
mvn clean install sonar:sonar

声纳

此示例依靠Sonar来显示代码覆盖率指标。 Sonar是一个狂热的开源代码质量工具,每个人都应该看看。
http://www.sonarsource.org/

对于我们的示例,需要进行几个简单的配置更改。
以下链接显示了如何安装Sonar并进行更改
http://johndobie.blogspot.com/p/setting-up-sonar.html

拆分测试套件。

此示例依靠JUnit类别来划分测试。

我们定义一个标记器接口,然后将其应用于我们想要拆分的测试。

public interface IntegrationTest {}

类别注释将添加到您的测试类中。 它采用新界面的名称。

import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
public class ExampleIntegrationTest{@Testpublic void longRunningServiceTest() throws Exception {}
}

整个过程非常简单,并在此处进行了详细说明
http://johndobie.blogspot.com/2012/04/unit-and-integration-tests-with-maven.html

分析代码覆盖率

我们使用jacoco插件进行代码覆盖。 这里有Jacoco的概述。
http://johndobie.blogspot.com/2012/01/unit-test-code-coverage.html
我们首先定义jacoco coverage文件的目录。

<coverage.reports.dir>${basedir}/target/coverage-reports
</coverage.reports.dir>
<sonar.jacoco.reportPath>${coverage.reports.dir}/jacoco-unit.exec
</sonar.jacoco.reportPath>
<sonar.jacoco.itReportPath>${coverage.reports.dir}/jacoco-it.exec
</sonar.jacoco.itReportPath>
<sonar.jacoco.jar>${basedir}/lib/jacocoagent.jar
</sonar.jacoco.jar>

配置单元测试

然后,我们通过运行标准的surefire插件(其中Jacoco代理指向$ {sonar.jacoco)来启动单元测试 reportPath} 。 这用于存储单元测试代码覆盖率结果。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.7.2</version>
<configuration><argLine>-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.reportPath},includes=com.*</argLine><includes><include>**/*.class</include></includes><excludedGroups>com.test.annotation.type.IntegrationTest</excludedGroups>
</configuration>
</plugin>

我们忽略以下配置的任何标记的集成测试

<excludedGroups>com.test.annotation.type.IntegrationTest</excludedGroups>

配置集成测试

对于集成测试,我们使用故障保护插件,并将Jacoco代理指向$ {sonar.jacoco。 itReportPath} 。 这用于存储集成测试代码覆盖率结果。

<plugin>
<plugin><artifactId>maven-failsafe-plugin</artifactId><version>2.12</version><dependencies><dependency><groupId>org.apache.maven.surefire</groupId><artifactId>surefire-junit47</artifactId><version>2.12</version></dependency></dependencies><configuration><groups>com.test.annotation.type.IntegrationTest</groups></configuration><executions><execution><goals><goal>integration-test</goal></goals><configuration><argLine>-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.itReportPath},includes=com.*</argLine><includes><include>**/*.class</include></includes></configuration></execution></executions>
</plugin>

我们还告诉插件使用正确的JUnit类别

<configuration><groups>com.test.annotation.type.IntegrationTest</groups>
</configuration>

运行这些文件时,它们将生成以下2个覆盖文件。

开始声纳

在运行构建之前,您需要启动Sonar服务器。
http://johndobie.blogspot.com/p/setting-up-sonar.html

运行示例

我们可以使用以下命令运行全部

mvn clean install sonar:sonar

如果浏览到声纳实例,您将看到以下结果。

参考: Agile Engineering Techniques博客上的JCG合作伙伴 John Dobie提供的Easy Unit和Integration Code Coverage 。

翻译自: https://www.javacodegeeks.com/2012/05/easy-unit-and-integration-code-coverage.html

易于使用的单位和集成代码相关推荐

  1. 如何让代码更易于维护_易于使用的单位和集成代码

    如何让代码更易于维护 此示例说明如何使用Maven和Sonar为单元和集成测试生成覆盖率. 它使用非常简单的技术,只需10-15分钟即可在任何现有的Maven构建中运行. 它可以用于单元,集成,ATD ...

  2. Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy

    Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy 原文连接: https://blog.csdn.net/wsj18808050/article/details/ ...

  3. 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二

    AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound  ...

  4. createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查

    在持续集成过程中,针对代码的静态检查一般有两个时间点:一是提交代码的时候.二是提交merge request的时候,如果代码检查不通过,则可以直接拒绝此次代码提交或者合并.下面我们介绍下在常见的dev ...

  5. 第9篇:Flowable-Modeler集成以及集成代码下载

    接上一篇: 第8篇:Flowable-Modeler集成之Flowable-modeler源码编译 https://blog.csdn.net/weixin_40816738/article/deta ...

  6. 持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05

    安装sonar Scanner 打开http://www.sonarqube.org/官网 找到下面扫描器 通过这个扫描器可以分析代码分析 因此你也的安装这个扫描器 上传sonar-scanner-2 ...

  7. 【Android 应用开发】使用蒲公英 SDK 收集崩溃日志信息 ( 导入依赖 | 申请 Key | 集成代码 | 清单文件配置 | 手动上传日志 | 手动检查更新 )

    文章目录 一.导入依赖 二.申请 API Key 和 FrontJS Token 三.Application 集成 PgyerSDKManager 代码 四.AndroidManifest.xml 清 ...

  8. 【一图流思维导图】QA质量管理 持续集成 代码质量 数据工厂

    QA质量管理 持续集成 快速交付效率 开发实践 为团队成员频繁的集成他们的工作 ci前后对比 问题暴露晚 业务交付时间快速增长 服务越多,多支开发成本大大增加 研发模式 代码 构建 测试 测试预发布平 ...

  9. matlab单位冲击序列代码,matlab产生单位冲击序列 matlab单位冲激函数代码

    如何用matlab生成单位阶跃序列信号u(k 5)及单位冲击序列信号δ(k 5)? matlab里不是有专门的函数生成单位阶跃信号的吗,然后将信号进行移动. MATLAB中如何定义单位脉冲函数? 单位 ...

最新文章

  1. PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
  2. R多变量正态性检验(Multivariate Normality Tests)
  3. ClewareControl 2.4 发布,传感器控制程序,增加对 python 的支持
  4. Ubuntu中的超级兔子:Tweak安装教程
  5. Pyhon 图片透明化
  6. 企业级 SpringBoot 教程 (十)用spring Restdocs创建API文档
  7. Ubuntu下安装FTP服务及使用(VSFTPD详细设置)(二)
  8. 可能是目前最详细的Redis内存模型及应用解读
  9. python求斜边上的高_直角三角形斜边上的高怎么求
  10. H3C 以太网集线器
  11. Excel@C#.Net之单元格设置相关
  12. mysql 开发复制协议_MySQL组复制MGR(一)– 技术概述
  13. Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
  14. [转载] 高等应用数学问题的matlab求解——第4章 线性代数问题的计算机求解
  15. 求三角形外接圆圆心坐标的算法
  16. c语言- 负号运算符,C语言运算符盘点,C语言运算符知识点讲解
  17. EasyExcel 固定(冻结)单元格
  18. python docx 字体设置_python docx 中文字体设置
  19. spring技巧之bean加载顺序控制
  20. GBT22239-2019等保2.0三级要求

热门文章

  1. apache ignite_Kubernetes集群上的Apache Ignite和Spring第3部分:测试应用程序
  2. vaadin_Vaadin提示:延迟加载和商品标识
  3. netty java_Netty Java快速指南
  4. layui绑定json_JSON-B非对称属性绑定
  5. 朝着理想坚实迈进_坚实原则:开放/封闭原则
  6. javaone_JavaOne 2015 –又一年,又向前迈进了一步
  7. maven和docker_Java EE,Docker和Maven(技术提示#89)
  8. aws上部署hadoop_在AWS Elastic MapReduce上运行PageRank Hadoop作业
  9. adf4351使用_使用ADF BC管理保存点
  10. cassandra 入门_Apache Cassandra和Java入门(第一部分)