Ant+JUnit+EMMA 單元測試覆蓋率

發表于:2012-04-20來源:新浪博客作者:竹天點擊數: 標簽:單元測試覆蓋率
EMMA,它是一個免費、開源的、用來衡量單元測試覆蓋度的工具。 三者結合,利用EMMA產生的測試覆蓋度報考,可以一目了然的知道那部分代碼已經被測試,哪部分沒有,從而控制單元測試的質量。

  EMMA,它是一個免費、開源的、用來衡量單元測試覆蓋度的工具。

  三者結合,利用EMMA產生的測試覆蓋度報考,可以一目了然的知道那部分代碼已經被測試,哪部分沒有,從而控制單元測試的質量。

  EMMA生成的報告類似于Cobertura(另一個功能類似于EMMA的開源工具),請參考:用Ant+JUnit+Cobertura輕松控制單元測試質量: http://ouzhong.blog.hexun.com/32368833_d.html EMMA的優勢在于更加輕量級,速度快,同時EMMA目前還在更新中。而Cobertura原開發團隊轉去做收費工具JCoverage之后,很少有更新。

  下面是一個本人測試能用的例子,Ant的配置文件。稍加修改就能用到你的項目中。

  注:需把下載的EMMA jars 放到lib文件夾中。http://emma.sourceforge.net/

  -->

  metrics="method:70,block:80,line:80,class:100">

  columns="name,class,method,block,line" encoding="UTF-8"/>

  應用中遇到的問題及擴展:

  1、其他功能正常,但是單元測試覆蓋率死活出不來也沒有報錯。查看ant運行內容,發現instrument(對編譯在路徑 ${classes.src} 中的Java類注入字節碼)部分和gen-report-coverage(產生覆蓋報告)部分始終沒有執行內容。糾結排查了很久,發現原因竟然是這句中true后面多了個空格,導致emma.enabled無效,

Ant+JUnit+EMMA <wbr>單元測試覆蓋率

  白白浪費了n多時間....

  2 、無論 java 源文件使用 UTF-8 還是 GB2312/GBK ,報告中的中文都顯示為問號或亂碼。

  參考資料: http://emma.sourceforge.net/reference/ch02s04s02.html

  解決方法:

  將

  改為

  此時, java 類的編碼要使用 gb2312 或者 gbk ,生成的報告中文顯示正常;如果 java 文件使用 utf-8 ,則還是亂碼。

  3 、測試報告中沒有 “ line, % 的報告,和具體 java 類的覆蓋信息 ” ?

  分析配置文件片段: < javac classpath = "${build.java.dir}" srcdir = "${src.java.dir}" destdir = "${build.java.dir}"

  fork = "true" source = "1.5" target = "1.5" debug = "true" >

  < classpath refid = "compile.classpath" />

  分析結果:發現編譯時,沒有設置 debug 屬性,增加 debug = "true" 或 debug="on" 后,問題解決。

  4、emma的示例代碼里面,report的sourcepath屬性只有一個src路徑,如果項目里面有多個src路徑同時要進行覆蓋率檢查的話,則需要這樣寫:

  ...

  不同的src路徑用操作系統的classpath分隔符或逗號隔開,比如window用分號隔開,官網是這樣解釋的:

  參考資料部分

  1 、 EMMA 官方網址:( http://emma.sourceforge.net/ )

  文檔: http://emma.sourceforge.net/reference/reference.html

  http://emma.sourceforge.net/docs.html#Reference+Documentation

  2 、

  3 、 可愛的 EMMA :測試 覆 蓋率工具

  4 、 用 Emma 的 Eclipse 插件進行代碼覆蓋率測試

  5 、 測試覆蓋率工具匯總

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97