統一生成單元測試報告及其覆蓋率報告
来源:互联网 发布:月薪4000 知乎 编辑:程序博客网 时间:2024/06/01 08:33
Junit及JaCoco都是基於ANT工具的,而在ANT的配置腳本中一般而言要兩次運行全部的單元測試用例來分別生成Junit的單元測試報告和JaCoCo的單元測試覆蓋率報告,本案例将以一簡例的单元测试覆盖率配置为例阐述應用Junit工具与JaCoCo工具統一生成單元測試報告及單元測試覆蓋統治報告。
JaCoCo是基于ANT的单元测试覆盖率报告自动生成工具,它可用来针对整个项目的单元测试用例生成覆盖率报告;而JaCoCo生成的生成的單元測試覆蓋率報告只能顯示當前項目中的單元測試對項目源碼的覆蓋而不能很好顯示哪些單元測試用例的運行結果是成功或失敗的,Junit生成的單元測試報告很好的的補充了JaCoCo生成的單元測試覆蓋率報告的這一缺陷。
<property name="result.dir" value="${basedir}/result"/>
<property name="result.class.dir" value="${result.dir}/classes"/>
<property name="result.data.dir" value="${result.dir}/data"/>
<property name="result.junit.dir" value="${result.dir}/junit"/>
<property name="result.junit.report.dir" value="${result.junit.dir}/report"/>
<property name="result.jacoco.dir" value="${result.dir}/jacoco"/>
<property name="result.jacoco.report.dir" value="${result.jacoco.dir}/report" />
--------------------------------------------------------------
設定單元測試報告所需的目錄屬性。
--------------------------------------------------------------
<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}"/>
<mkdir dir="${result.junit.dir}"/>
<mkdir dir="${result.junit.report.dir}"/>
......
</target>
--------------------------------------------------------------
初始任務創建單元測試報告所需的目錄。
--------------------------------------------------------------
<target name="ambuild" description="Build for get unit test report and code coverage report." depends="init">
<javac debug="true" debuglevel="${debuglevel}" destdir="${result.class.dir}" source="${source}" target="${target}">
<src path="src"/>
<classpath refid="alertmanager.classpath"/>
</javac>
<javac debug="true" debuglevel="${debuglevel}" destdir="${result.class.dir}" source="${source}" target="${target}">
<src path="test"/>
<classpath refid="alertmanager.classpath"/>
</javac>
</target>
--------------------------------------------------------------
ambuild任務,是Eclipse自動生成的,用來編譯整個項目。
--------------------------------------------------------------
<target name="rununittest" depends="ambuild">
<jacoco:coverage>
<junit fork="true" printsummary="true">
<batchtest todir="${result.data.dir}">
<fileset dir="${result.class.dir}">
<include name="**/*Test.class"/>
<exclude name="**/*DispatchTest.class"/>
</fileset>
</batchtest>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<formatter type="plain"/>
<classpath refid="alertmanager.classpath"/>
</junit>
</jacoco:coverage>
<junitreport todir="${result.data.dir}">
<fileset dir="${result.data.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${result.junit.report.dir}">
<param name="TITLE" expression="Unit test of AlertManager."/>
</report>
</junitreport>
</target>
--------------------------------------------------------------
rununittest任務是用來生成單元測試覆蓋率報告數據及單元測試報告。
--------------------------------------------------------------
<target name="coveragereport" description="Generate report by Jacoco" depends="rununittest">
<jacoco:report>
<executiondata>
<file file="${basedir}/jacoco.exec"/>
</executiondata>
<!-- the class files and optional source files ... -->
<structure name="Coverage report of Alert Manager.">
<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="Generated By PartySchool." destdir="${result.jacoco.report.dir}" />
<csv destfile="${result.jacoco.report.dir}/report.csv" />
<xml destfile="${result.jacoco.report.dir}/report.xml" />
</jacoco:report>
</target>
<target name="report" depends="clean,coveragereport"/>
--------------------------------------------------------------
生成單元測試覆蓋率報告。
--------------------------------------------------------------
JaCoCo是基于ANT的单元测试覆盖率报告自动生成工具,它可用来针对整个项目的单元测试用例生成覆盖率报告;而JaCoCo生成的生成的單元測試覆蓋率報告只能顯示當前項目中的單元測試對項目源碼的覆蓋而不能很好顯示哪些單元測試用例的運行結果是成功或失敗的,Junit生成的單元測試報告很好的的補充了JaCoCo生成的單元測試覆蓋率報告的這一缺陷。
<property name="result.dir" value="${basedir}/result"/>
<property name="result.class.dir" value="${result.dir}/classes"/>
<property name="result.data.dir" value="${result.dir}/data"/>
<property name="result.junit.dir" value="${result.dir}/junit"/>
<property name="result.junit.report.dir" value="${result.junit.dir}/report"/>
<property name="result.jacoco.dir" value="${result.dir}/jacoco"/>
<property name="result.jacoco.report.dir" value="${result.jacoco.dir}/report" />
--------------------------------------------------------------
設定單元測試報告所需的目錄屬性。
--------------------------------------------------------------
<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}"/>
<mkdir dir="${result.junit.dir}"/>
<mkdir dir="${result.junit.report.dir}"/>
......
</target>
--------------------------------------------------------------
初始任務創建單元測試報告所需的目錄。
--------------------------------------------------------------
<target name="ambuild" description="Build for get unit test report and code coverage report." depends="init">
<javac debug="true" debuglevel="${debuglevel}" destdir="${result.class.dir}" source="${source}" target="${target}">
<src path="src"/>
<classpath refid="alertmanager.classpath"/>
</javac>
<javac debug="true" debuglevel="${debuglevel}" destdir="${result.class.dir}" source="${source}" target="${target}">
<src path="test"/>
<classpath refid="alertmanager.classpath"/>
</javac>
</target>
--------------------------------------------------------------
ambuild任務,是Eclipse自動生成的,用來編譯整個項目。
--------------------------------------------------------------
<target name="rununittest" depends="ambuild">
<jacoco:coverage>
<junit fork="true" printsummary="true">
<batchtest todir="${result.data.dir}">
<fileset dir="${result.class.dir}">
<include name="**/*Test.class"/>
<exclude name="**/*DispatchTest.class"/>
</fileset>
</batchtest>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<formatter type="plain"/>
<classpath refid="alertmanager.classpath"/>
</junit>
</jacoco:coverage>
<junitreport todir="${result.data.dir}">
<fileset dir="${result.data.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${result.junit.report.dir}">
<param name="TITLE" expression="Unit test of AlertManager."/>
</report>
</junitreport>
</target>
--------------------------------------------------------------
rununittest任務是用來生成單元測試覆蓋率報告數據及單元測試報告。
--------------------------------------------------------------
<target name="coveragereport" description="Generate report by Jacoco" depends="rununittest">
<jacoco:report>
<executiondata>
<file file="${basedir}/jacoco.exec"/>
</executiondata>
<!-- the class files and optional source files ... -->
<structure name="Coverage report of Alert Manager.">
<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="Generated By PartySchool." destdir="${result.jacoco.report.dir}" />
<csv destfile="${result.jacoco.report.dir}/report.csv" />
<xml destfile="${result.jacoco.report.dir}/report.xml" />
</jacoco:report>
</target>
<target name="report" depends="clean,coveragereport"/>
--------------------------------------------------------------
生成單元測試覆蓋率報告。
--------------------------------------------------------------
- 統一生成單元測試報告及其覆蓋率報告
- 希尔伯特曲线及其生成
- Cookie及其使用(一)
- LSTM及其变体(一)
- Guid生成算法及其HashCode生成算法
- JAVA生成Excel及其下载
- 最小生成树及其衍生
- Android jar生成及其混淆
- CGI技术及其开发(一)
- 中间件技术及其应用(一)
- 钩子及其应用(一)
- Android_AsyncTask详解及其应用(一)
- Android_AsyncTask详解及其应用(一)
- Android_AsyncTask详解及其应用(一)
- GRBL一:概括及其名词
- Java多线程及其使用(一)
- 指针及其应用(一)
- 一维数组及其应用
- DialogActivity--自定义对话框式菜单
- 交互设计的方法
- 不显示"回收站"
- maven3.0.4学习笔记(二)目录结构
- JSON美化输出
- 統一生成單元測試報告及其覆蓋率報告
- LUCENE.net 优化方案
- Unity3d手册_Trouble Shooting
- JNI 返回结构体参数
- 理解委托与事件
- os.path
- 递归算法实现全排列
- 关于CountDownLatch类Demo代码
- js call方法