7

我繼承了一個android項目來設置代碼覆蓋範圍。我沒有爲android做太多工作,並且幾乎沒有任何經驗,於是我開始尋找一個有用的教程。隨着驚喜的發展,前幾個教程非常有幫助,我能夠包含jacoco gradle插件並啓用代碼覆蓋。使用詹金斯我甚至生成了一份報道報道。到目前爲止,一切都很好。Android儀器測試庫模塊覆蓋

但是,當我看到報告時,聞到了一些可疑的東西。測試vs覆蓋率似乎太小了。進一步調查顯示罪魁禍首。

測試本身被寫成功能更多,而不是單元測試。那會好的。但是,項目庫在其模塊中沒有測試。相反,庫測試寫在gui模塊中(因爲這是使用庫的地方)。

因此,即使大部分庫函數都包含在測試中,只會從gui模塊生成覆蓋範圍。

項目

- GUI模塊

----桂源

----所有的測試

- 庫模塊

----庫資源

不,我一直在尋找一個工作解決方案相當一段時間。不幸的是,我所能找到的是如何將單元和集成.exec測試覆蓋率結果合併爲一個報告(或其他基於單元測試的解決方案 - 其中沒有一個適用於儀器測試)。

我需要的是根據Gui模塊測試生成來自庫模塊的源代碼。

因爲我在這裏黑暗中磕磕絆絆,甚至有類似的東西,遠程可能嗎?

回答

3

對於任何人讀這...如果你有同樣的問題,現在是時候開始撞你靠着牆頭...

今天我很幸運在此跌倒:https://issuetracker.google.com/issues/37004446#comment12

實際的「問題」似乎是,圖書館項目是「始終」的發佈類型。因此,它們不包含「必要的儀器設置」(除非您也啓用了代碼覆蓋率,儘管我沒有對其進行測試)。

所以解決的辦法就是來專門啓用,在圖書館出版,「調試」版本(如所提到的,默認爲釋放型):

android { 
     publishNonDefault true 
} 

然後,在使用庫中的項目,指定debugCompile依賴(編譯版本可以使用「默認」發佈配置):

dependencies { 
     debugCompile project(path: 'library', configuration: 'debug') 
     releaseCompile project('library') 
} 

過程(這個我理所當然的),請記住啓用測試覆蓋率爲圖書館和:

android { 
     buildTypes { 
       debug { 
         testCoverageEnabled true 
       } 
     } 
}