Cobertura和Maven:集成和单元测试的代码覆盖率

在姜黄项目中,我们每晚维护一个仪表板。 在仪表板上,我们收集有关项目的统计信息,包括代码覆盖率,findbugs分析和其他指标。 我们一直在使用Maven EMMA插件来提供代码覆盖,但是遇到了EMMA问题。 在对类进行检测后,这会导致测试失败。 因此,由于在构建过程中需要准确的测试结果,因此我们禁用了代码覆盖率。 但是,我们仍然需要覆盖代码,更重要的是,我们还需要覆盖现有测试套件,这实际上是一个集成测试套件,而不是单元测试套件。

Cobertura和EMMA插件实际上都是设计用于单元测试的。 因此,我们必须解决该限制。

  1. 首先,我们需要对类进行检测。
  2. 其次,我们需要打包检测的类,并在以后的构建中使用它们。
  3. 需要告诉集成测试为其使用依赖的检测类。
  4. 生成结果的XML报告。

我尝试过这样做,但又不依赖于ant,但是每次我尝试使用maven-site-plugin并将其配置为生成报告时,都会抱怨cobertura:check没有正确配置。 在我们的情况下,我不需要运行检查,只需要生成的报告即可。 于是Ant和AntContrib得以营救。 以下是我想出的完整的Maven个人资料:

<profile><id>cobertura</id><dependencies><dependency><groupId>net.sourceforge.cobertura</groupId><artifactId>cobertura</artifactId><optional>true</optional><version>1.9.4.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><configuration><instrumentation><excludes><exclude>org/ebayopensource/turmeric/test/**/*.class</exclude><exclude>org/ebayopensource/turmeric/common/v1/**/*.class</exclude></excludes></instrumentation></configuration><executions><execution><id>cobertura-instrument</id><phase>process-classes</phase><goals><goal>instrument</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><executions><execution><id>cobertura-jar</id><phase>post-integration-test</phase><goals><goal>jar</goal></goals><configuration><classifier>cobertura</classifier><classesDirectory>${basedir}/target/generated-classes/cobertura</classesDirectory></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><version>2.3.1</version><executions><execution><id>cobertura-install</id><phase>install</phase><goals><goal>install</goal></goals><configuration><classifier>cobertura</classifier></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><executions><execution><phase>verify</phase><configuration><tasks><taskdef classpathref='maven.runtime.classpath'resource='tasks.properties' /><taskdef classpathref='maven.runtime.classpath'resource='net/sf/antcontrib/antcontrib.properties' /><availablefile='${project.build.directory}/cobertura/cobertura.ser'property='ser.file.exists' /><if><equals arg1='${ser.file.exists}'arg2='true' /><then><echo message='Executing cobertura report' /><mkdirdir='${project.build.directory}/site/cobertura' /><cobertura-reportformat='xml'destdir='${project.build.directory}/site/cobertura'datafile='${project.build.directory}/cobertura/cobertura.ser' /></then><else><echo message='No SER file found.' /></else></if></tasks></configuration><goals><goal>run</goal></goals></execution></executions><dependencies><dependency><groupId>ant-contrib</groupId><artifactId>ant-contrib</artifactId><version>20020829</version></dependency></dependencies></plugin></plugins></build></profile>

注意:请勿在此配置文件中使用cobertura:cobertura目标。 由于它将尝试对类进行两次检测,因此构建将失败。

必须使用Ant和AntContrib,因为没有cobertura:report目标,因为它希望在网站生成阶段运行。 但是,这会导致检查目标也可以运行,而我们则不需要。 因此,也许,我将制作一个补丁以添加报告目标,以便仅运行报告而不必运行站点目标。 希望这对某些人有帮助,因为我为此花费了很多时间。

祝您编程愉快,别忘了分享!

参考: Intelligent Cramps博客上的JCG合作伙伴 David Carver 使用Cobertura和Maven为集成和单元测试启用代码覆盖率 。


翻译自: https://www.javacodegeeks.com/2012/09/cobertura-and-maven-code-coverage-for.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二分图之匈牙利算法模版

1 /*2 匈牙利算法模版邻接表版3 最大匹配问题4 时间复杂度&#xff1a;O (nm)5 */6 #include <cstdio>7 #include <vector>8 #include <cstring>9 using namespace std; 10 const int maxn 505; 11 vector<int> v[maxn];//x v[i][j]表示i可以与x匹配…

android 字体描边实现,android文字描边功能的实现

这里也要简单说一下&#xff0c;这些小模块并不是我原创&#xff0c;也是当时查资料找到的&#xff0c;由于时间比较久&#xff0c;原文链接已经忘记了&#xff0c;所以这里就不列出引用链接了。不过这些代码我都修改、完善过&#xff0c;也添加了一些注释&#xff0c;希望对大…

Factorial vs Power

题意 输入a&#xff0c;找到满足n!>a^n 最小的n。 数据 第一行T(1 < T < 1e5)&#xff0c;表示测试样例数.(2 < a < 1e6)。 输入 3 2 3 4 输出 4 7 9 这个东西一看就知道是二分求解的&#xff0c;但是我们还是不知道怎么求的&#xff0c;我们可以吧他们取对数然…

评论:Arun Gupta撰写的“ Java EE 6 Pocket Guide”

这是我很高兴写的评论。 我的朋友阿伦&#xff08;Arun&#xff09;发布了Java EE 6袖珍指南&#xff0c;该指南将在您订购时尽早提供。 我很早就知道这本书&#xff0c;因为我很乐意对其进行回顾&#xff0c;也感谢有机会为本书做出一点贡献&#xff01; Kindle版本已经可用&a…

双android手机同步工具,手机同步软件Android Manager使用图文教程

类型&#xff1a;手机工具大小&#xff1a;23.6M语言&#xff1a;繁体 评分&#xff1a;6.6标签&#xff1a;立即下载Android Manager 可透过五个简单的步骤设定&#xff1a;步骤一. 在计算机上安装 Android Manager请点选以下之下载按钮或直接于计算机上输入下载网址&#xff…

Camel:构建基于消息的应用程序

这是一篇长文章&#xff0c;包含三个单独的主题&#xff1a; Java的Apache Camel入门 使用CamelRunner改善路线的启动 使用Camel构建基于消息的应用程序 但是&#xff0c;由于我准备了包含所有这些材料的camel-demo-1.0.0-SNAPSHOT-project.zip &#xff0c;因此我认为将它们…

android 网易item广告,Android仿网易严选商品详情页

仿照网易严选商品详情页面&#xff0c;整个页面分为两个部分&#xff0c;上面一部分是Native的ScrollView&#xff0c;下面一部分则是WebView&#xff0c;其目的是为了可以进行分步加载。滑动到ScrollView底部时&#xff0c;继续向上拖动&#xff0c;可以加载下面的WebView部分…

freemarker,数字,日期,布尔值常用的函数

${3.4?floor} ${3.4?ceiling} ${3.45?round} ${3.45?rtf} ${3.458?string("0.##")} ${3.42?string.percent} ${3.42?string.currency} ${date?string("yyyy-MM-dd")} ${date?date} ${date?time} ${date?datetime}${true?c} ${true?string} ${…

mysql联合索引与Where子句优化浅析

问题描述&#xff1a;把排序、条件等一个一个去除来做测试&#xff0c;结果发现问题就出在排序部分&#xff0c;去除排序时&#xff0c;执行时间由原来的48秒变成0.3x秒。于是&#xff0c;把涉及排序的字段组成一个联合索引alter table xx add index indexname(x1,x2,x3)&#…

有效使用Eclipse的热门提示

以下是一些技巧&#xff0c;可以帮助您避免潜在的问题并在使用Eclipse时提高工作效率。 避免安装问题 切勿在旧版本之上安装新版本的Eclipse。 首先重命名旧版本&#xff0c;将其移开&#xff0c;然后将新版本解压缩到干净的目录中。 恢复混乱的工作空间 对于许多开发人员来…

android拍照截图组件,Android截图命令screencap与视频录制命令screenrecord(示例代码)...

查看帮助命令[email protected] ~$ adb shell screencap -vscreencap: invalid option -- vusage: screencap [-hp] [-d display-id] [FILENAME]-h: this message-p: save the file as a png.-d: specify the display id to capture, default 0.If FILENAME ends with .png it …

usaco 2017 February platinum

1.一条路&#xff0c;两边都是一个1到n的全排列&#xff0c;可以把其中一个全排列的起始位置改变&#xff08;比如123可以变成231或者312&#xff09; 然后把相同的数连起来&#xff0c;求小交叉数。 先算一下交叉数&#xff0c;然后直接一步步移动&#xff0c;O1更新一下状态就…

Hessian 源码简单分析

Hessian 源码简单分析 Hessian 是一个rpc框架&#xff0c; 我们需要先写一个服务端&#xff0c; 然后在客户端远程的调用它即可。 服务端&#xff1a; 服务端通常和spring 做集成。 首先写一个接口&#xff1a; public interface HelloService { void sayHello(String n…

Java开发人员应该知道的三件事

对于那些长期关注JavaOne 2012会议的读者来说&#xff0c;这是一篇有趣的文章。 我最近对Java冠军Heinz Kabutz的采访引起了我的注意&#xff1b; 包括他的Java内存难题程序&#xff0c;从Java内存管理的角度来看&#xff0c;这很有启发性。 采访中有一个特别的部分吸引了我的注…

android怎么垂直居中且靠右,placeholder 靠右垂直居中/位置兼容

1.input输入框文字靠右垂直居中。2.placehoder提示同样靠右垂直居中。( placeholder是HTML5 input的新属性&#xff0c;英文意思是占位符&#xff0c;它一般表示input输入框的默认提示值。)css代码input {text-align: right;font-size:0.3rem;width:100%;height:0.78rem;line-…

Python-Matplotlib 18 注释

Python-Matplotlib 18 注释 EG1: import numpy as np import matplotlib.pyplot as plty np.arange(-5, 6,1) plt.plot(y, y*y) plt.annotate(Annotate , xy(0,1) , xytext(0,5) ,arrowpropsdict(facecolorr , frac0.2 ))plt.show()转载于:https://www.cnblogs.com/zsr0401/p/…

while和for循环

循环结构图&#xff1a; 循环结构主要分为两种&#xff1a;有while和for两种循环&#xff0c;while又分为do{...}while和while{...},do...while表示先执行后判断&#xff0c;而while循坏表示先判断后执行&#xff0c;如果循环条件都不满足的情况下&#xff0c;do...while至少执…

通过beforeClass和afterClass设置增强Spring Test Framework

如何允许实例方法作为JUnit BeforeClass行为运行 JUnit允许您在所有测试方法调用之前和之后一次在类级别上设置方法。 但是&#xff0c;通过有意设计&#xff0c;他们将其限制为仅使用BeforeClass和AfterClass批注的静态方法。 例如&#xff0c;此简单的演示显示了典型的Junit设…

华为鸿蒙出来正当时,关于华为鸿蒙操作系统,中兴率先表态

原标题&#xff1a;关于华为鸿蒙操作系统&#xff0c;中兴率先表态 来源&#xff1a;科技数码迷进入2021年之后中兴这个品牌的存在感越来越强了&#xff0c;并且还学会了借势营销。每当国内智能手机领域有大事之时总会看到中兴或红魔手机的身影。这说明在5G过渡期中兴要借个机会…

条件变量(Condition Variable)详解

转载于&#xff1a;http://blog.csdn.net/erickhuang1989/article/details/8754357 条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。举个简单的例子&#xff0c;应用程序A中包含两个线程t1和t2。t1需要在bool变量test_cond为true时才能…