當前位置:才華齋>IT認證>JAVA認證>

JAVA覆蓋率工具EMMA介紹

JAVA認證 閲讀(4.47K)

最近在對Java代碼進行單元測試的時候瞭解到一種針對Java代碼的強大的.覆蓋率工具Emma。那麼覆蓋率工具Emma是怎麼運行的呢?下面跟yjbys小編一起來看看吧!

JAVA覆蓋率工具EMMA介紹

首先介紹一下EMMA 是一個開源、面向 Java 程序測試覆蓋率收集和報告工具。它通過對編譯後的 Java 字節碼文件進行插裝,在測試執行過程中收集覆蓋率信息,並通過支持多種報表格式對覆蓋率結果進行展示。EMMA可以統計函數覆蓋、類覆蓋、行覆蓋等,據説最新版支持分支覆蓋。

查看了一下EMMA的基本原理,大致分為以下步驟:插樁(instr),運行,收集(ctl),報告(report)。

  插樁

命令行:java emma instr -cp /usr/local//anrs/lib/ -m overwrite -ix +com.* =

參數介紹:

-cp,指定插樁的路徑,多個jar包可以用,分割

-m:輸出模式

overwrite:重新jar包,

default:copy, 需要加上-d參數,指定輸出路徑。有插樁,才cp一份class到指定路徑

fullcopy:需要加上-d參數,指定輸出路徑。 不管有沒有插樁,都cp一份class到指定路徑

-merge:合併。

default:yes。 如果metadata指定輸出的文件一樣,將兩次插樁信息進行合併

no。不合並兩次插樁信息

-ix:指定需要插樁的class

+com.*: + 指包含

-com.*:-指排除

  運行

一般情況下,直接運行應用程序即可。EMMA會啟動一個監聽端口,用來後面收集信息(ctl)。這個端口是固定的,47653。

如果我們的應用是多進程的,就會出現啟動失敗。其實EMMA也提供了一個命令,進行端口設置:=39123

還有host指定,=. default is localhost

這個參數需要加在程序啟動命令裏

EMMA還有簡單的配置文件:java erties=erties

erties format: tag=value

  收集

一般有兩種收集信息方法:

1. 程序退出,自動收集,在當前運行目錄下生成

2. 命令行:

java -cp /usr/jdk/jdk1.6.0_23/jre/lib/ext/ emma ctl -connect localhost:47653 -command ,

  報告

命令行:

java -cp /usr/jdk/jdk1.6.0_29/jre/lib/ext/ emma report -r html -in –sp src/=

參數介紹

-r: report type:html,txt,xml

-sp: sourcecode path

除了命令行方式外,EMMA可以直接在Eclipse中進行使用。