久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

JAVA覆蓋率工具EMMA詳細解析

時間:2024-08-19 17:58:37 JAVA認證 我要投稿
  • 相關推薦

JAVA覆蓋率工具EMMA詳細解析2016

  EMMA 是一個開源、面向 Java 程序測試覆蓋率收集和報告工具。它通過對編譯后的 Java 字節(jié)碼文件進行插裝,在測試執(zhí)行過程中收集覆蓋率信息,并通過支持多種報表格式對覆蓋率結果進行展示。那么EMMA覆蓋率工具有什么原理,怎么使用?下面跟yjbys小編一起來學習一下吧!

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

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

  插樁

  命令行:java emma instr -cp /usr/local//anrs/lib/anrs.jar -m overwrite -ix +com.* -Dmetadata.out.file=test.em

  參數(shù)介紹:

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

  -m:輸出模式

  overwrite:重新jar包,anrs.jar

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

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

  -merge:合并。

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

  no。不合并兩次插樁信息

  -ix:指定需要插樁的class

  +com.*: + 指包含

  -com.*:-指排除

  運行

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

  如果我們的應用是多進程的,就會出現(xiàn)啟動失敗。其實EMMA也提供了一個命令,進行端口設置:-Demma.rt.control.port=39123

  還有host指定,-Demma.rt.control.host=192.168.22.22. default is localhost

  這個參數(shù)需要加在程序啟動命令里

  EMMA還有簡單的配置文件:java -Demma.properties=my.properties

  my.properties format: tag=value

  收集

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

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

  2. 命令行:

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

  報告

  命令行:

  java -cp /usr/jdk/jdk1.6.0_29/jre/lib/ext/emma.jar emma report -r html -in anrs.em coverage.ec –sp src/-Dreport.html.out.file=coverage.html

  參數(shù)介紹

  -r: report type:html,txt,xml

  -sp: sourcecode path

  項目應用

  1 項目特點

  應用程序會啟動多個進程,啟動腳本也會執(zhí)行jar包。---需要解決emma端口沖突

  測試過程中,由于bug會修改代碼,版本迭代。希望統(tǒng)計這些版本的整個覆蓋率信息---emma支持多個版本的覆蓋率統(tǒng)計

  希望每個case都有自己獨立的覆蓋率統(tǒng)計信息,同時也要有整個的覆蓋統(tǒng)計信息。

  2 應用

  每個case執(zhí)行的步驟:

  1. 判斷是否更新了jar包

  1.1 更新:插樁,指定同個文件名合并到一起

  1.1.1 stop app

  1.1.2 設置 EMMAPORT 環(huán)境變量

  1.1.3 啟動一個應用進程,指定EMMAPORT:-Demma.rt.control.port=$EMMAPORT

  1.1.4 循環(huán)1.1.2 & 1.1.3,啟動完所有的進程

  1.2 未更新:

  1.2.1 清除執(zhí)行信息:

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

  2. 執(zhí)行case

  3. 收集執(zhí)行信息

  3.1 把所有進程的執(zhí)行信息收集到一個文件里

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

  3.2 每個case需要有獨立的執(zhí)行信息

  cp coverage.ec coverage_caseNo.ec

  4. 生成報告

  測試完這個版本后,生成報告

【JAVA覆蓋率工具EMMA詳細解析】相關文章:

關于Ajax的詳細解析09-18

Java IDE詳細介紹201604-26

荷蘭留學趨勢詳細解析10-17

Java的內(nèi)存劃分全解析08-02

關于Java動態(tài)代理的解析09-28

EXCEL集成工具箱詳細教程11-08

英國留學申請階段詳細解析11-07

服務器托管詳細解析05-27

軟裝設計流程詳細解析08-17

日本留學音樂專業(yè)詳細解析08-15