由于示例被測組件運行在 Websphere Portal Server 中,并使用默認的 JRE 運行,因此將emma.jar 放到 “/opt/WebSphere/PortalServer/java/jre/lib/ext” 下面。在實際的測試中,將該路徑進行相應的替換。
插裝
EMMA 中提供了 “instr” 命令完成插裝操作。插裝操作可以面向 JAR 包、 WAR 包、 WAR 包、類文件和目錄,選擇合適的命令進行插裝可以使插裝過程變得簡便。下面的1-4通過具體例子介紹了不同情況下的插裝命令。
插裝目錄和類文件
對于類文件,通過指定類文件所在的目錄實現。
清單 1. 對類文件插裝命令
插裝 JAR 包
JAR 包可以作為一個整體進行插裝。通過對整個 JAR 進行插裝,可以避免對 JAR 包進行解壓和壓縮的過程,提高插裝效率。
清單 2. 對 JAR 包插裝命令
插裝 WAR/EAR 包
由于 WAR/EAR 包需要運行在特定的環境中,所以在進行插裝之前,需要先將其安裝在特定的 J2EE 容器中,然后將其看作目錄進行插裝。
清單 3. 對 WAR/EAR 包插裝命令
選擇性的插裝
EMMA 支持對整個 JAR 包和目錄進行插裝,但如果在 JAR 包或者目錄中包含系統的文件或者測試過程中不關心的文件時,應該進行選擇性插裝,因為這些文件的存在會影響測試結果的百分比。 EMMA 提供了選擇插裝的選項,實現選擇性插裝。
清單 4. 選擇插裝命令
上述命令選擇了與清單2中同樣的 JAR 包,由于只包含了 org.wstest.service.* 內的內容,因此只插裝了4個類。
以上的1-4分別介紹了在插裝過程中的常用命令,下面對命令中用到的一些參數進行解釋。
參數 “m”代表插裝后文件輸出的模式。有三個值可供選擇: “copy” ,“overwrite” 和 “fullcopy” 。其中,“copy” 和 “ fullcopy” 這兩種模式將會改變插裝文件所在的目錄,并需要測試人員手動為其生成所需的包,使用起來比較復雜。“overwrite” 模式直接用插裝后的文件覆蓋插裝前文件,使用方便。但是由于同一時間生成的文件只能插裝一次,在 “overwrite”模式下,插裝前的文件已經丟失,測試人員無法重復插裝操作,因此建議在插裝之前先將需要插裝的文件和包進行備份。
參數 “ip” 和 “cp” 用來提供插裝路徑,其中 “cp” 用來指明一個文件夾, “ip” 指定單獨的文件或者 JAR 包。
參數 “Dmetadata.out.file” 用來指定插裝得到的元數據文件保存的路徑。
EMMA 中通過 “ix” 參數指定文件的包含和排除關系,其中在 “+” 符號后的文件為包含進的文件, “-” 后面的內容為排除在外的文件。
合并元數據
完成插裝操作以后,在指定的路徑下會產生一些名為 “*coverage.em” 的文件,這些文件保存了插裝的元信息,這些信息主要是記錄插裝過程中的插裝點在被測代碼中的位置。如果在插裝過程中,指定這些文件到同一文件的話, EMMA 默認將元數據進行合并。如果測試人員未指定路徑,或者希望得到獨立的元文件,這些文件將分別產生在默認或指定的目錄下。測試人員還可以通過使用 “merge” 命令手動將這些元文件進行合并,保證生成的覆蓋率報表的全面性。注意:合并操作不支持逆向操作。
清單 5. 合并元數據命令
在 “input” 后面的參數為待合并的文件名,在 “out” 后面的參數為合并以后的結果文件。
完成上面的操作以后,就已經完成了收集覆蓋率信息的準備工作。接下來測試人員可以進行正常的測試工作,在運行測試的過程中, EMMA 將跟蹤并記錄執行軌跡,得到覆蓋率信息。
運行測試用例,得到覆蓋率報告
原文轉自:http://www.testwo.com/article/591