如何让代码更易于维护_易于使用的单位和集成代码
如何让代码更易于维护
有什么事吗?
我的前一篇文章展示了如何使用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
如何让代码更易于维护
如何让代码更易于维护_易于使用的单位和集成代码相关推荐
- 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)...
让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett 译文出处:linux中国-Hank Chow 检查你的代码的质 ...
- 如何让代码更易于维护_如何轻松地使您的网站更易于访问
如何让代码更易于维护 by Jaroslav Vaňkát 通过JaroslavVaňkát 如何轻松地使您的网站更易于访问 (How you can easily make your website ...
- 永恒python配合什么主武器_让Python代码更易维护的七种武器
检查你的代码的质量,通过这些外部库使其更易维护. 可读性很重要. 随着软件项目进入"维护模式",对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准).然而,在代码 ...
- python武器代码_程序员需要掌握的七种 Python 代码更易维护的武器
检查你的代码风格 PEP 8 是 Python 代码风格规范,它规定了类似行长度.缩进.多行表达式.变量命名约定等内容.尽管你的团队自身可能也会有稍微不同于 PEP 8 的代码风格规范,但任何代码风格 ...
- php代码不好维护,PHP干货|依赖注入——让你的代码更好维护
应小可爱们的强烈要求|终于把IT交流群给建起来了 (加群:370382869 聊技术) 1.什么是好代码 经常会听到"这个人是大牛,你不是","你写代码质量高,实习生写的 ...
- 易于使用的单位和集成代码
此示例说明如何使用Maven和Sonar生成单元测试和集成测试的覆盖率. 它使用非常简单的技术,只需10-15分钟即可在任何现有的Maven构建中运行. 它可用于单元,集成,ATDD或任何其他类型的测 ...
- 夸奖对方代码写的好_我写出这样干净的代码,老板直夸我
一份整洁的代码对于一个系统是多么重要.如果代码写的乱七八糟,最后的结果就是无法对这些代码进行有效的管控.很有可能会毁掉这个系统. 什么才是整洁的代码? Biarne Stroustrup -[C++语 ...
- python 零代码快速开发平台_企业如何选择开源的零代码开发平台
原标题:企业如何选择开源的零代码开发平台 开源零代码开发平台是指开放源代码的零代码开发平台,因为其代码是开放的,所以企业如果有自己的技术人员可以直接进行功能及性能的修改.零代码开发平台经过多年的发展已 ...
- python代码怎么变大_马友发玩python--如何让代码动次大次?
大家好,我是马友发,但是想码还想有头发,那系不阔能的啦~(手动滑稽 上次我们聊到了如何用matplotlib来绘制一幅动图,看来各位看官并不买账啊. 稳如脱发,关系不大.这次咱们还是用matplotl ...
最新文章
- vs+命令行运行带参数cpp文件
- android模拟多任务键,模拟Android Handler机制——单线程处理多任务
- 这几个在搞低功耗广域网的,才是物联网的黑马
- Java -- 网络编程(一):Client与Server之间的数据传送
- oracle 察看用户是否被锁,解锁以及改密码
- ASP.NET获取真正的客户端IP地址的6种方法
- java lambda函数类型_java8-lambda-函数式接口及四大类型函数接口
- Android中如何设置RadioButton在文字的右边,图标在左边
- java笔记--关于int和byte[]的转换
- 安徽大学计算机基础知识答案,安徽大学大学计算机基础选择题
- 安装 VS2010 中文旗舰版
- jxl获取excel超级链接
- 关于区块链在存证方面的应用
- 用什么命令确定linux系统,在Linux系统中有哪些命令可以用于查看进程?
- python 之 海龟绘图(turtle)
- python类中的魔方方法
- Visual Studio 2019安装与配置
- 混淆的C代码竞赛2006.请解释sykes2.c
- mongodb用户管理1
- 日本电视连续剧《阿信》主题歌歌词—永远相信
热门文章
- 3分钟了解“关联规则”推荐
- maven安装遇到的坑
- article之api文档
- C++描述杭电OJ 2012. 素数判定 ||
- 将数组前n个和后m-n个整体逆置的实现
- Servlet使用适配器模式进行增删改查案例(IEmpService.java)
- MyBatis中多表查询(多表查询语句实现)重点
- java的BASE64Encoder,BASE64Decoder加密与解密
- java 连接 sql2005,java与sql server2005 连接有关问题
- 神经网络中的最小二乘_深度神经网络:噪声中解读出科学