易于使用的单位和集成代码
有什么事吗?
我的前一篇文章展示了如何使用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
易于使用的单位和集成代码相关推荐
- 如何让代码更易于维护_易于使用的单位和集成代码
如何让代码更易于维护 此示例说明如何使用Maven和Sonar为单元和集成测试生成覆盖率. 它使用非常简单的技术,只需10-15分钟即可在任何现有的Maven构建中运行. 它可以用于单元,集成,ATD ...
- Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy
Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy 原文连接: https://blog.csdn.net/wsj18808050/article/details/ ...
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查
在持续集成过程中,针对代码的静态检查一般有两个时间点:一是提交代码的时候.二是提交merge request的时候,如果代码检查不通过,则可以直接拒绝此次代码提交或者合并.下面我们介绍下在常见的dev ...
- 第9篇:Flowable-Modeler集成以及集成代码下载
接上一篇: 第8篇:Flowable-Modeler集成之Flowable-modeler源码编译 https://blog.csdn.net/weixin_40816738/article/deta ...
- 持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05
安装sonar Scanner 打开http://www.sonarqube.org/官网 找到下面扫描器 通过这个扫描器可以分析代码分析 因此你也的安装这个扫描器 上传sonar-scanner-2 ...
- 【Android 应用开发】使用蒲公英 SDK 收集崩溃日志信息 ( 导入依赖 | 申请 Key | 集成代码 | 清单文件配置 | 手动上传日志 | 手动检查更新 )
文章目录 一.导入依赖 二.申请 API Key 和 FrontJS Token 三.Application 集成 PgyerSDKManager 代码 四.AndroidManifest.xml 清 ...
- 【一图流思维导图】QA质量管理 持续集成 代码质量 数据工厂
QA质量管理 持续集成 快速交付效率 开发实践 为团队成员频繁的集成他们的工作 ci前后对比 问题暴露晚 业务交付时间快速增长 服务越多,多支开发成本大大增加 研发模式 代码 构建 测试 测试预发布平 ...
- matlab单位冲击序列代码,matlab产生单位冲击序列 matlab单位冲激函数代码
如何用matlab生成单位阶跃序列信号u(k 5)及单位冲击序列信号δ(k 5)? matlab里不是有专门的函数生成单位阶跃信号的吗,然后将信号进行移动. MATLAB中如何定义单位脉冲函数? 单位 ...
最新文章
- PHPExcel使用-使用PHPExcel导出文件-导出MySQL数据
- R多变量正态性检验(Multivariate Normality Tests)
- ClewareControl 2.4 发布,传感器控制程序,增加对 python 的支持
- Ubuntu中的超级兔子:Tweak安装教程
- Pyhon 图片透明化
- 企业级 SpringBoot 教程 (十)用spring Restdocs创建API文档
- Ubuntu下安装FTP服务及使用(VSFTPD详细设置)(二)
- 可能是目前最详细的Redis内存模型及应用解读
- python求斜边上的高_直角三角形斜边上的高怎么求
- H3C 以太网集线器
- Excel@C#.Net之单元格设置相关
- mysql 开发复制协议_MySQL组复制MGR(一)– 技术概述
- Cannot load JDBC driver class 'com.mysql.jdbc.Driver '
- [转载] 高等应用数学问题的matlab求解——第4章 线性代数问题的计算机求解
- 求三角形外接圆圆心坐标的算法
- c语言- 负号运算符,C语言运算符盘点,C语言运算符知识点讲解
- EasyExcel 固定(冻结)单元格
- python docx 字体设置_python docx 中文字体设置
- spring技巧之bean加载顺序控制
- GBT22239-2019等保2.0三级要求
热门文章
- apache ignite_Kubernetes集群上的Apache Ignite和Spring第3部分:测试应用程序
- vaadin_Vaadin提示:延迟加载和商品标识
- netty java_Netty Java快速指南
- layui绑定json_JSON-B非对称属性绑定
- 朝着理想坚实迈进_坚实原则:开放/封闭原则
- javaone_JavaOne 2015 –又一年,又向前迈进了一步
- maven和docker_Java EE,Docker和Maven(技术提示#89)
- aws上部署hadoop_在AWS Elastic MapReduce上运行PageRank Hadoop作业
- adf4351使用_使用ADF BC管理保存点
- cassandra 入门_Apache Cassandra和Java入门(第一部分)