這裏是我的情況:將jacoco-agent.properties打包成APK以便它可以被讀取?
背景
- 我調查代碼覆蓋我們的Android應用程序。該應用程序是用Gradle和Android Studio構建的。
- 我需要兩種情況下的代碼覆蓋率報告:在手動測試期間以及在使用我們規模較大的Appium套件構建的自動化測試期間。
- 我需要得到一個概念驗證快(並不總是這樣?)所以我沒有機會做徹底的R & D.所以請原諒我顯示的任何無知: )
- 我可以訪問應用程序源,但對運動部件知之甚少。
- 我調查了JaCoCo和Emma。這個問題與JaCoCo有關。
- 鑑於我們需要覆蓋Appium和手動測試,我相信JaCoCo的離線儀器就是我所需要的。
進展情況
- 我用the JaCoCo plugin page和the Android Tools page並能正確配置的build.gradle。
- 我已經驗證了這些類(存在於
build\intermediates\classes
中)與JaCoCo配合使用,並且包裝在APK中。 - 我按照this SO discussion寫了一個BroadCastReceiver,它會收到「end coverage」廣播。
問題
當我手動運行該應用程序,我總是看到在logcat的 W/System.err的錯誤:java.io.FileNotFoundException:/jacoco.exec:打開失敗:EROFS(只讀文件系統)
從this SO question和the JaCoCo docs據我所知,Jacoco需要知道在哪裏存儲jacoco.exec
文件 - 和我需要打包jacoco-agent.properties(含destfile
屬性)與APK。
我試圖把jacoco-agent.properties在assets
- 它被打包成APK正常,但似乎沒有任何效果(即Jacoco未能像往常一樣) 我試圖把它裏面res
- 它沒有打包成APK。 我試過res/raw
,並在文件名中輸入了一個破折號的錯誤,如this SO question。
我在我的智慧結束,並會真正感謝幫助。如何使用我的Gradle構建將jacoco-agent.properties打包到APK中,以便JaCoCo能夠讀取它?
相關問題
this SO question,有從2013年的答案,它是螞蟻,而不是搖籃。
我編輯的答案,因此它可能對於像我這樣的新手更清晰:)請讓我知道如果我的編輯是正確的。 – Vish
感謝您的回覆;我添加了代碼,但它似乎沒有幫助。 (我解壓APK並檢查jacoco-agent.properties沒有打包)。我的build.gradle看起來是這樣的:'sourceSets { 主要{ manifest.srcFile '的AndroidManifest.xml' assets.srcDirs = [ '資產'] java.srcDirs = [ 'src' 中] res.srcDirs = [」 res'] res.includes = ['**/jacoco-agent.properties'] }' – Vish
@Vish,你近我看你指定'... res.includes = ['**/jacoco-agent。屬性']'res'指向android'Resources'而不是Plain Old Java包含哪個'resources.includes = ['**/jacoco-agent.properties']'注意'res' vs'resources' – JBirdVegas