如何让代码更易于维护

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

有什么事吗?

我的前一篇文章展示了如何使用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. 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)...

    让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质 ...

  2. 如何让代码更易于维护_如何轻松地使您的网站更易于访问

    如何让代码更易于维护 by Jaroslav Vaňkát 通过JaroslavVaňkát 如何轻松地使您的网站更易于访问 (How you can easily make your website ...

  3. 永恒python配合什么主武器_让Python代码更易维护的七种武器

    检查你的代码的质量,通过这些外部库使其更易维护. 可读性很重要. 随着软件项目进入"维护模式",对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准).然而,在代码 ...

  4. python武器代码_程序员需要掌握的七种 Python 代码更易维护的武器

    检查你的代码风格 PEP 8 是 Python 代码风格规范,它规定了类似行长度.缩进.多行表达式.变量命名约定等内容.尽管你的团队自身可能也会有稍微不同于 PEP 8 的代码风格规范,但任何代码风格 ...

  5. php代码不好维护,PHP干货|依赖注入——让你的代码更好维护

    应小可爱们的强烈要求|终于把IT交流群给建起来了 (加群:370382869 聊技术) 1.什么是好代码 经常会听到"这个人是大牛,你不是","你写代码质量高,实习生写的 ...

  6. 易于使用的单位和集成代码

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

  7. 夸奖对方代码写的好_我写出这样干净的代码,老板直夸我

    一份整洁的代码对于一个系统是多么重要.如果代码写的乱七八糟,最后的结果就是无法对这些代码进行有效的管控.很有可能会毁掉这个系统. 什么才是整洁的代码? Biarne Stroustrup -[C++语 ...

  8. python 零代码快速开发平台_企业如何选择开源的零代码开发平台

    原标题:企业如何选择开源的零代码开发平台 开源零代码开发平台是指开放源代码的零代码开发平台,因为其代码是开放的,所以企业如果有自己的技术人员可以直接进行功能及性能的修改.零代码开发平台经过多年的发展已 ...

  9. python代码怎么变大_马友发玩python--如何让代码动次大次?

    大家好,我是马友发,但是想码还想有头发,那系不阔能的啦~(手动滑稽 上次我们聊到了如何用matplotlib来绘制一幅动图,看来各位看官并不买账啊. 稳如脱发,关系不大.这次咱们还是用matplotl ...

最新文章

  1. vs+命令行运行带参数cpp文件
  2. android模拟多任务键,模拟Android Handler机制——单线程处理多任务
  3. 这几个在搞低功耗广域网的,才是物联网的黑马
  4. Java -- 网络编程(一):Client与Server之间的数据传送
  5. oracle 察看用户是否被锁,解锁以及改密码
  6. ASP.NET获取真正的客户端IP地址的6种方法
  7. java lambda函数类型_java8-lambda-函数式接口及四大类型函数接口
  8. Android中如何设置RadioButton在文字的右边,图标在左边
  9. java笔记--关于int和byte[]的转换
  10. 安徽大学计算机基础知识答案,安徽大学大学计算机基础选择题
  11. 安装 VS2010 中文旗舰版
  12. jxl获取excel超级链接
  13. 关于区块链在存证方面的应用
  14. 用什么命令确定linux系统,在Linux系统中有哪些命令可以用于查看进程?
  15. python 之 海龟绘图(turtle)
  16. python类中的魔方方法
  17. Visual Studio 2019安装与配置
  18. 混淆的C代码竞赛2006.请解释sykes2.c
  19. mongodb用户管理1
  20. 日本电视连续剧《阿信》主题歌歌词—永远相信

热门文章

  1. 3分钟了解“关联规则”推荐
  2. maven安装遇到的坑
  3. article之api文档
  4. C++描述杭电OJ 2012. 素数判定 ||
  5. 将数组前n个和后m-n个整体逆置的实现
  6. Servlet使用适配器模式进行增删改查案例(IEmpService.java)
  7. MyBatis中多表查询(多表查询语句实现)重点
  8. java的BASE64Encoder,BASE64Decoder加密与解密
  9. java 连接 sql2005,java与sql server2005 连接有关问题
  10. 神经网络中的最小二乘_深度神经网络:噪声中解读出科学