發(fā)布于:2021-03-01 15:49:07
1
1415
0
導(dǎo)讀
高德地圖開放平臺產(chǎn)品不斷迭代,代碼邏輯越來越復(fù)雜,現(xiàn)有的測試流程不能保證完全覆蓋所有業(yè)務(wù)代碼,測試不到的代碼及分支,會存在一定的風(fēng)險。為了保證測試全面覆蓋,需要引入代碼覆蓋率做為測試指標(biāo),需要對SDK代碼進(jìn)行染色,測試結(jié)束后可生成代碼覆蓋率報告,作為發(fā)版前的一項重要卡點指標(biāo)。本文小結(jié)了Android端代碼染色原理及技術(shù)實踐。
相關(guān)閱讀:iOS代碼染色原理及技術(shù)實踐
JaCoCo工具
JaCoCo有以下優(yōu)點:
支持Ant和Gradle打包方式,可以自由切換。
支持離線模式,更貼合SDK的使用場景。
JaCoCo文檔比較全面,還在持續(xù)維護(hù),有問題便于解決。
JaCoCo主要是通過ASM技術(shù)對Java字節(jié)碼進(jìn)行處理和插樁,ASM和Java字節(jié)碼技術(shù)不是本文重點,感興趣的朋友可以自行了解。下面重點介紹JaCoCo的插樁原理。
由于Java字節(jié)碼是線性的指令序列,所以JaCoCo主要是利用ASM處理字節(jié)碼,在需要的地方插入一些特殊代碼。
我們通過Test1方法觀察一下JaCoCo做的處理。