JAVA覆蓋率工具EMMA介紹
最近在對Java程式碼進行單元測試的時候瞭解到一種針對Java程式碼的強大的.覆蓋率工具Emma。那麼覆蓋率工具Emma是怎麼執行的呢?下面跟yjbys小編一起來看看吧!
首先介紹一下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中進行使用。
-
Java高階工程師面試題及答案
隨著Internet的迅速發展,Web應用日益廣泛,Java語言也得到了迅速發展。Java軟體工程師是指運用Java這種開發語言去完成軟體產品的軟體程式設計、開發、測試、維護升級等工作的人員。那麼java工程師的面試你過了嗎?如果們有,快來看看yjbys小編為大家準備的Java高階...
-
java考試習題及答案
選擇題3、在JavaApplet程式使用者自定義的Applet子類中,一般需要過載父類的(D)方法來完成一些畫圖操作。A.start()B.stop()C.init()D.paint()3、Java語言具有許多優點和特點,下列選項中,哪個反映了Java程式並行機制的特點?BA)安全性B)多執行緒C)跨平臺D)可移植4、下列...
-
高階Java面試題及答案2016
java高階面試有哪些常見問題呢?下面yjbys為大家分享最新java常見面試題及答案解析,僅供參考!什麼是可變引數?可變引數允許呼叫引數數量不同的方法。請看下面例子中的求和方法。此方法可以呼叫1個int引數,或2個int引數,或多個int引數。//int(type)followed...(thre...
-
Java的記憶體劃分全解析
Java把記憶體劃分成兩種:一種是棧記憶體,一種是堆記憶體。下面一起來看看java的記憶體劃分全部內容。棧記憶體存放物件:函式中基本型別的變數和物件的引用變數、靜態類方法特點:棧有一個很重要的特殊性,就是存在棧中的資料可以共享。假設我們同時定義:inta=3;intb=3;編譯器先處...