我們系統使用weblogic做服務器,集成測試框架使用的是junit+selenium。
首先,要把jacoco的jacocoagent.jar包放到部署應用的服務器上,接着在系統服務的JAVA_OPTIONS 后面添加如下參數:
1
|
|
參數解釋:
- 前面的yourpath是放jacocoagent.jar文件的目錄路徑;
- includes是指要收集哪些類(注意不要關寫包名,最后要寫.*),不寫的話默認是*,會收集應用服務上所有的類,包括服務器和其他中間件的類,一般要過濾;
- output有4個值,分別是file,tcpserver,tcpclient,mbean,默認是file。使用file的方式只有在停掉應用服務的時候才能產生覆蓋率文件,而使用tcpserver的方式可以在不停止應用服務的情況下下載覆蓋率文件,后面會介紹如何使用dump方法來得到覆蓋率文件。
- address是ip, port是端口,這是使用tcpserver方式需要的2個參數,也是后面dump方法要用到的。(這里的address我只能使用服務器的ip,如果使用其他ip,服務啟動時會報錯。)
更多參數可以參考java agent。
配置完應用服務的JAVA_OPTIONS之后,啟動服務器,然后可以開始跑你的集成測試,跑完之后,實際上jacocoagent已經將覆蓋率數據記錄下來了,我們可以使用下面的ant任務來dump出覆蓋率文件:
1 2 3 |
|
這里的address和port是剛才在JAVA_OPTIONS里面寫的address和port的值,destfile是指生成的覆蓋率文件路徑。
注意,這里雖然得到了集成測試的覆蓋率文件,但是需要應用服務器上的類文件才能產出相應的覆蓋率報告,如果類文件是其他JVM編譯的,產出的報告覆蓋率是0%。
有2種方法可以得到覆蓋率文件所需的class文件:
- 將應用服務部署的包(ear或war或jar)包下載下來之后解壓,即可得到對應的class文件;
- 在前面做單元測試之后,可以將class文件打成一個zip包,然后上傳到服務器,最后在需要的時候去服務器上取。
得到集成測試的覆蓋率文件之后,結合之前取到的單元測試覆蓋率文件,我們可以將2個文件合並,得到綜合的覆蓋率文件,命令如下:
1 2 3 4 5 |
|