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.pswp.cn/news/371505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371505.shtml
英文地址,請注明出處:http://en.pswp.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時才能…