[开源]JaCoco [转载]
From: http://blog.csdn.net/jungle0127/article/details/7302120
JaCoCo是基於ANT的單元測試覆蓋率報告自動生成工具,它可用來針對整個專案的單元測試用例生成覆蓋率報告。
JaCoCo的下載
至頁面下載最新版本的JaCoCo壓縮包,解壓縮後找到Lib資料夾下的jacocoant.jar文件備用。
JaCoCo工具是與ANT工具結合使用,用來完成自動化單元測試的覆蓋率報告生成工作。在ANT的腳本裡設置步驟如下所示:
1. 在根節點裡添加屬性 basedir=”.” 和xmlns:jacoco="antlib:org.jacoco.ant",示例如下:
<projectbasedir="." default="build"name="alertmanager"xmlns:jacoco="antlib:org.jacoco.ant">
2. 創建單元測試覆蓋率報告生成目錄,示例如下:
<propertyname="result.dir" value="${basedir}/result"/>
<propertyname="result.class.dir" value="${result.dir}/classes"/>
<propertyname="result.data.dir" value="${result.dir}/data"/>
<propertyname="result.jacoco.dir" value="${result.dir}/jacoco"/>
<propertyname="result.jacoco.report.dir"value="${result.jacoco.dir}/report" />
3. 創建對jacocoant.jar引用的taskdef節點,示例如下:
<taskdefuri="antlib:org.jacoco.ant"resource="org/jacoco/ant/antlib.xml">
<classpath path="${basedir}/lib/jacocoant.jar" />
</taskdef>
4. 在項目的classpath節點中創建對jacocoant.jar引用的classpath項,示例如下:
<pathelementlocation="${basedir}/lib/jacocoant.jar"/>
5. 在初始化任務中創建單元測試覆蓋率報告生成的目標目錄,示例如下:
<target name="init">
<mkdir dir="${result.dir}"/>
<mkdir dir="${result.data.dir}"/>
<mkdir dir="${result.class.dir}"/>
<mkdir dir="${result.jacoco.dir}"/>
<mkdir dir="${result.jacoco.report.dir}"/>
…
</target>
單元測試運行部分
建立一個新的ANT任務,該任務是運行專案中所有的單元測試並收集相關資料,示例及其相關注解如下。
<targetname="rununittest"depends="ambuild"> ------1
<jacoco:coverage>
<junit fork="true" printsummary="true">
<batchtest todir="${result.data.dir}">------2
<fileset dir="${result.class.dir}">
<include name="**/*Test.class"/>
<exclude name="**/*DispatchTest.class"/>
</fileset>
</batchtest>
<formatter type="brief" usefile="false"/>------3
<formatter type="xml"/>
<formatter type="plain"/>
<classpathrefid="alertmanager.classpath"/>
</junit>
</jacoco:coverage>
</target>
1. 該項任務依賴於所在專案的BUILD任務,即在運行此任務前需要保證該專案已成功編譯。示例中depends=”ambuild”,ambuild任務即為該項目的編譯任務。
2. JaCoCo是基於JUnit的,所以在jacoco標籤包含了junit標籤;<batchtest>標籤將使用者關心的單元測試class檔包含進來。
3. 本部分是對單元測試覆蓋率報告資料格式的設置及單元測試成功運行所需的classpath的設置。
單元測試覆蓋統治報告生成部分
建立一個新的ANT任務,該任務是用來根據單元測試運行部分一節的結果生成單元測試覆蓋統治報告,示例及其相關注釋如下。
<targetname="coveragereport" description="Generatereport byJacoco" depends="rununittest">
<jacoco:report>
<executiondata>------1
<file file="${basedir}/jacoco.exec"/>
</executiondata>
<!--the class files and optional source files ... -->
<structure name="Coveragereport of Alert Manager."> ------2
<classfiles>
<fileset dir="${result.class.dir}">
<exclude name="**/*Test.class"/>
</fileset>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${basedir}/src" >
<exclude name="**/*Exception.java"/>
<exclude name="**/*ExportData*.jar"/>
<exclude name="**/*DispatchTest.java"/>
<exclude name="**/*Sender.java"/>
</fileset>
</sourcefiles>
</structure>
<!--to produce reports in different formats. -->
<html footer="GeneratedBy PartySchool."destdir="${result.jacoco.report.dir}" /> ------3
<csv destfile="${result.jacoco.report.dir}/report.csv" />
<xml destfile="${result.jacoco.report.dir}/report.xml" />
</jacoco:report>
</target>
1. 指定生成單元測試覆蓋率報告所必須的檔,該檔由首次運行該ANT任務時,自動生成,用戶不必關心它。
2. 該部分是將使用者關心的單元測試的class檔及專案原始檔案添加進來。
3. 該部分是設置單元測試覆蓋率報告的格式。
單元測試覆蓋率報告結果示例如圖一所示:
推荐阅读
-
Android Studio导入library项目开源库的图文教程
-
微信订阅号如何设置转载原创文章?微信公众号让其他账号转载原创文章设置方法
-
免费开源文件压缩/解压管理工具7-Zip 15.06 Beta官方下载 支持RAR5格式文件
-
一个加密JavaScript的开源工具PACKER2.0.2
-
Python六大开源框架对比
-
github开源社区排名(Github年终各大排行榜超级盘点)
-
谁说科技无国界?开源项目托管平台GitHub正沦为制裁工具
-
Python爬虫实战之12306抢票开源
-
30 个很棒的PHP开源CMS内容管理系统小结
-
什么?CMS自助建站系统的开源居然可以免费下载了!可以自己建网站