使用Cobertura,JUnit,HSQLDB,JPA涵蓋您的測試

你好!你好嗎?

今天讓我們談談一個非常有用的工具,名為“ Cobertura”。 該框架與我們在另一篇文章中看到的Emma框架具有相同的功能。

Cobertura和Emma之間的主要區別在于Cobertura顯示帶有圖形的簡歷頁面。

如果要查看有關該主題的其他主題,請單擊以下鏈接: 使用JUnit Ant和Emma進行的測試覆蓋 // // 使用HSQLDB,JPA和Hibernate進行的JUnit // TDD –第一步 。

我將使用本文中的相同代碼( 帶有HSQLDB,JPA和Hibernate的JUnit ); 如果您想設置一個環境來運行代碼,則可以按照在那里找到的步驟進行操作(您將在本文末尾找到要下載的源代碼)。
我不是熟練的Ant用戶,您可能會看到一些代碼并認為“此腳本不好”。 隨意告訴我如何“升級”螞蟻代碼的想法。 ;)

讓我們下載Cobertura庫– Download1.9.4.1

下載完成后,將jar文件(/cobertura.jar、/lib/*包括asm,jakarta,log4j)放入我們項目的lib文件夾中。

在我們項目的根源中,使用以下代碼創建一個名為“ build.xml”的文件創建的文件必須位于您項目的根目錄中,否則您的項目將無法使用 ):

<project name="Cobertura Coverage" basedir="."><!--  Project Source  Code --><property name="src.dir" value="src" /><property name="build.dir" value="bin" /><property name="teste.dir" value="src/test" /><property name="lib.dir" value="lib" /><property name="report.dir" value="cobertura" /><!-- Project classpath --><path id="project.classpath"><pathelement location="${bin.dir}" /><fileset dir="${lib.dir}"><include name="*.jar" /></fileset></path><!-- Tested Class --><property name="DogFacadeTest" value="test.com.facade.DogFacadeTest" /></project>

在上面的代碼中,我們正在創建源代碼和庫的路徑。 讓我們創建一個任務,以刪除由Cobertura生成的文件和已編譯的Java源代碼。

<!-- Clears the paths -->
<target name="01-CleannUp" description="Remove all generated files."><delete dir="${build.dir}" /><delete file="cobertura.ser" /><delete dir="${report.dir}" /><mkdir dir="${build.dir}" /><mkdir dir="${report.dir}" />
</target>

要編譯我們的源代碼,請在下面添加代碼并運行任務(確保代碼可以編譯):

<!-- Compiles the Java code -->
<target name="02-Compile" depends="01-CleannUp" description="invoke compiler"><javac debug="true" debuglevel="vars,lines,source" srcdir="${src.dir}" destdir="${build.dir}"><classpath refid="project.classpath" /></javac><copy file="${src.dir}/META-INF/persistence.xml" todir="${build.dir}/META-INF" />
</target>

讓我們設置Cobertura,以便它可以測試測試類并準備好環境:

<!-- Cobertura configs -->
<property name="cobertura.instrumented-classes.dir" value="${report.dir}/instrumented-classes" />
<property name="cobertura.data.file" value="cobertura.ser" />
<path id="cobertura.classpath"><fileset dir="${lib.dir}" includes="/*.jar" />
</path><!-- Points to the cobertura jar -->
<taskdef classpath="${lib.dir}/cobertura.jar" resource="tasks.properties" classpathref="cobertura.classpath" /><!-- Instruments the classes -->
<target name="03-Instrument" depends="02-Compile"><delete quiet="false" failonerror="false"><fileset dir="${cobertura.instrumented-classes.dir}" /></delete><delete file="${cobertura.data.file}" /><cobertura-instrument todir="${cobertura.instrumented-classes.dir}"><fileset dir="${build.dir}"><include name="**/*.class" /><exclude name="**/*Test.class" /></fileset></cobertura-instrument><copy todir="${cobertura.instrumented-classes.dir}"><fileset dir="${src.dir}" casesensitive="yes"><patternset id="resources.ps" /></fileset></copy>
</target>

添加下面的代碼,您將能夠通過ant使用JUnit執行測試:

<!-- Set up the instrumented classes path -->
<path id="cover-test.classpath"><fileset dir="${lib.dir}" includes="**/*.jar" /><pathelement location="${cobertura.instrumented-classes.dir}" /><pathelement location="${build.dir}" />
</path><!-- Run the JUnit test -->
<target name="04-RunTest" depends="03-Instrument" ><junit printsummary="yes" haltonerror="no" haltonfailure="no"  fork="yes"><batchtest><fileset dir="${build.dir}" includes="**/*Test.class" /></batchtest><classpath refid="cover-test.classpath" /></junit><delete file="transaction.log" />
</target>

作為我們的最后一個動作,讓我們使用Cobertura創建報告。 將下面的代碼添加到“ build.xml”中并執行任務:

<!-- Creates the Cobertura report -->
<target name="00-CreateReport" depends="04-RunTest"><cobertura-report srcdir="${cobertura.data.file}" destdir="${report.dir}"><fileset dir="${src.dir}"><include name="**/*.java" /></fileset></cobertura-report><delete dir="${report.dir}/instrumented-classes" /><delete file="cobertura.ser"  />
</target>

更新您的Eclipse項目(在項目中按F5鍵),您將看到報告創建成功。 打開“ cobertura”文件夾中的“ index.html”文件。

Cobertura框架可幫助我們計算應測試方法的次數。 在編寫家庭作業“ Dog equals”方法時,請創建報告,這樣您可能會發現自己的“ equals”未涵蓋在內。 創建測試并再次運行報告。

您可以在此處從我們的項目中下載源代碼 。

如果您有任何疑問或疑問,請在下面寫下。

再見。 \ o_

參考:我們的JCG合作伙伴 提供的Cobertura,JUnit,HSQLDB,JPA涵蓋了您的測試 ? uaiHebert博客上的Hebert Coelho。


翻譯自: https://www.javacodegeeks.com/2012/02/covering-your-tests-with-cobertura.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fedora mysql gui_fedora8安裝 mysql++失敗!!裝了一個晚上沒搞定!!傷心阿!

fedora8安裝 mysql失敗&#xff01;&#xff01;裝了一個晚上沒搞定&#xff01;&#xff01;傷心阿&#xff01;發布時間:2008-02-24 05:15:27來源:紅聯作者:lygzx[rootF8 mysql-3.0.0]# ./configure --w/usr/lib/mysqlconfigure: error: unrecognized option: --w/usr/lib/my…

MongoDB 數組類型查詢 —— $elemMatch 操作符

描述 $elemMatch 數組查詢操作用于查詢數組值中至少有一個能完全匹配所有的查詢條件的文檔。語法格式如下&#xff1a; { <field>: { $elemMatch: { <query1>, <query2>, ... } } }如果只有一個查詢條件就沒必要使用 $elemMatch。 限制 不能指定 $where 查…

MVC4 Action 方法的執行

1. ActionInvoker 的執行&#xff1a; 在MVC 中 包括Model綁定與驗證在內的整個Action的執行是通過一個名為ActionInvoker的組件來完成的。 它同樣具有 同步/異步兩個版本。 分別實現了接口 IActionInvoker /IAsyncActionInvoker。 ASP.NET MVC 中真正用于Action方法同步和異步…

C# 基礎知識總結

要學好C#&#xff0c;基礎知識的重要性不言而喻&#xff0c;現將常用到的一些基礎進行總結&#xff0c;總結如下&#xff1a; 01. 數據類型轉換&#xff1a; 強制類型轉換(Chart--> int): char crA; int i (int)(cr); 02. 委托/匿名函數/Lamda表達式&#xff1a; 委托是匿…

Java注釋和真實世界的Spring示例

“注釋”是編程語言定義的一種&#xff0c;用作“標記”。 可以將它們視為編程語言引擎可以理解的注釋行。 它們不會直接影響程序的執行&#xff0c;但是會在需要時間接影響。 定義 注釋使用interface關鍵字定義&#xff0c;并且與接口相似。 它具有定義類似于接口方法的屬性。…

scrapy+mysql+pipeline+更新數據_python3+Scrapy爬蟲實戰(二)—— 使用pipeline數據保存到文本和數據庫(mysql)...

前言保存本地存儲Json數據配置setting保存數據庫創建數據庫創建表編寫pipelines配置setting本文是對上篇文章所講的代碼進一步優化&#xff0c;回看可以點這里&#xff0c;代碼就直接在上一篇代碼中進行改造&#xff0c;沒有的小伙伴可以在這里下載。前言Scrapy 提供了 pipelin…

NYOJ 44 子串和

子串和 時間限制&#xff1a;5000 ms | 內存限制&#xff1a;65535 KB難度&#xff1a;3描述 給定一整型數列{a1,a2...,an}&#xff0c;找出連續非空子串{ax,ax1,...,ay}&#xff0c;使得該子序列的和最大&#xff0c;其中&#xff0c;1<x<y<n。 輸入 第一行是一個…

學習進度條

學習進度條 周次 學習時間 新編寫代碼行數 博客量&#xff08;篇&#xff09; 學到知識點 第一周 160 0 1 github的使用和認識軟件工程這門課的價值。 第二周 160 130 3 復利的計算和Github的一些簡單操作還有就是進行項目的開發分析&#xff0c;還有就是對…

ARM基礎

1.  將32位a的【7&#xff1a;4】改成0101 -> a a&(~(0xF << 4)) | (0x5 << 4)&#xff1b; 2.  32位&#xff1a;單次處理數據32位。 3.  對于CPU而言&#xff0c;一切皆內存&#xff1b; 4.  DMA總線&#xff1a;不經過CPU直接在內存和內存間交換…

使用Jolokia和JMX進行客戶端服務器監視

Java監視工具的選擇非常廣泛&#xff08;由Google提供的隨機選擇和順序&#xff09;&#xff1a; javamelody 壓力探頭 JVisualVM 控制臺 賈蒙 Java JMX Nagios插件不適用 此外&#xff0c;還有各種專用工具&#xff0c;例如ActiveMQ &#xff0c; JBoss &#xff0c; Qu…

圖書管理系統數據字典_2. 結構化——數據字典

返回目錄&#xff1a;Chilan Yuk&#xff1a;軟件工程分析設計圖庫目錄?zhuanlan.zhihu.com一、基本知識用于定義數據流和數據存儲的結構&#xff0c;并給出構成所給的數據流和數據存儲的各數據項的基本數據類型。數據字典中應該包括關于數據的如下信息一般信息&#xff08;名…

HDOJ 5184 Brackets 卡特蘭數擴展

既求從點(0,0)僅僅能向上或者向右而且不穿越yx到達點(a,b)有多少總走法... 有公式: C(ab,min(a,b))-C(ab,min(a,b)-1) /// 折紙法證明卡特蘭數: http://blog.sina.com.cn/s/blog_6917f47301010cno.html Brackets Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65…

010-python基礎-數據類型-字符串操作

1、移除空白 1 username.strip() 2、分割 1 names "alex,jack,rain" 2 names_1 names.split(",") #  字符串分割之后變成列表 3 print(names_1) 4 #輸出 5 [alex, jack, rain] 3、合并列表各元素成為字符串 1 names_1 [alex, jack, rain]2 names_2…

重復次數最多的 子串_每日算法系列【LeetCode 424】替換后的最長重復字符

題目描述給你一個僅由大寫英文字母組成的字符串&#xff0c;你可以將任意位置上的字符替換成另外的字符&#xff0c;總共可最多替換 k 次。在執行上述操作后&#xff0c;找到包含重復字母的最長子串的長度。示例1輸入&#xff1a; s "ABAB", k 2 輸出&#xff1a; …

python基礎(一)簡單入門

一.第一個python程序 1.交互式編程 直接在命令行里面輸入python即可進入python交互式命令行&#xff0c;linux下一樣&#xff1a; 在 python 提示符中輸入以下文本信息&#xff0c;然后按 Enter 鍵查看運行效果&#xff1a; 2.腳本式編程 把代碼都寫到文件里面&#xff0c;然后…

VS2015 python

http://pgqlife.info/2015/05/05/VS-Python/ 配置文檔轉載于:https://www.cnblogs.com/itdef/p/5262712.html

了解Java弱引用

我最近沒來得及關注該博客&#xff0c;最重要的是&#xff0c;我沒有為與技術界的所有人保持聯系而致歉。 我最近偶然發現了Java 1.2以來提供的java.lang.ref包&#xff0c;但具有諷刺意味的是&#xff0c;幾天前我才知道它。 在瀏覽了幾篇有關各種引用類型和java doc的文章時&…

unbuntu 啟動任務腳本_Ubuntu下服務啟動腳本編寫

像Nginx、MySQL等服務一樣&#xff0c;在后臺運行自己編寫的抓取天氣信息的Python腳本。1.以管理員權限新建一個服務腳本文件sudo vim /etc/init.d/weather_service2.用下列模板修改該服務腳本文件#!/bin/bash### BEGIN INIT INFO## Provides: weather_service# Required-Start…

iOS開發工具——網絡封包分析工具Charles

作者 唐巧 發布于 2013年12月9日 | 1 討論 分享到&#xff1a;微博微信FacebookTwitter有道云筆記郵件分享稍后閱讀我的閱讀清單簡介 Charles是在Mac下常用的截取網絡封包的工具&#xff0c;在做iOS開發時&#xff0c;我們為了調試與服務器端的網絡通訊協議&#xff0c;常常需要…

Java Web托管選項流程圖

我經常被問到的一個問題是在何處以及如何托管Java Web應用程序。 可以在帶有嵌入式服務器的Eclipse中創建它很好&#xff0c;但是如何將它帶給人們呢&#xff1f; 長期以來&#xff0c;對于發燒友的程序員一直沒有答案。 只有昂貴和超大型的選擇。 事情最近變了&#xff0c;但這…