簡體   English   中英

我怎樣才能在android studio中運行Jacoco進行代碼覆蓋

[英]How can i run Jacoco in android studio for code coverage

我已經在android studio中調試了一下。 我的app模塊的gradle配置文件包含以下內容:

debug{
    testCoverageEnabled true
}

然后我在終端中運行以下命令:

gradlew createDebugCoverageReport

事實上我得到了一個報告,但應用程序也崩潰了一個只讀錯誤,我似乎無法弄明白。 我正在使用mac。 這是堆棧跟蹤:

 **java.io.FileNotFoundException: /jacoco.exec: open failed: EROFS (Read-only file system)**
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:416)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at org.jacoco.agent.rt.internal_932a715.output.FileOutput.openFile(FileOutput.java:67)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at org.jacoco.agent.rt.internal_932a715.output.FileOutput.startup(FileOutput.java:49)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at org.jacoco.agent.rt.internal_932a715.Agent.startup(Agent.java:122)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at org.jacoco.agent.rt.internal_932a715.Agent.getInstance(Agent.java:50)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at org.jacoco.agent.rt.internal_932a715.Offline.<clinit>(Offline.java:31)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at mypackage.org.duckduck.MainApplication.$jacocoInit(MainApplication.java)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at mypackage.org.duckduck.MainApplication.<clinit>(MainApplication.java)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at java.lang.Class.newInstanceImpl(Native Method)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at java.lang.Class.newInstance(Class.java:1319)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.Instrumentation.newApplication(Instrumentation.java:983)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.Instrumentation.newApplication(Instrumentation.java:968)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.LoadedApk.makeApplication(LoadedApk.java:499)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4480)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.ActivityThread.access$1300(ActivityThread.java:146)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.os.Looper.loop(Looper.java:137)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5168)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:511)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ Caused by: libcore.io.ErrnoException: open failed: EROFS (Read-only file system)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at libcore.io.Posix.open(Native Method)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:400)
03-01 00:04:56.871  19006-19006/mypackage.org.duckduck W/System.err﹕ ... 24 more

因為,我沒有看到你的整個gradle文件,我不確定你是否已經有正確的方法但是如果你在gradle文件中,一個建議就是不要明確應用jacoco插件。 Gradle的最新版本與JaCoCo一起打包。

直到最近,當我嘗試沒有那條線時,這打破了我的測試。

另一件事是我跑

gradle connectedCheck

從終端(Mac)或命令提示符(Windows),這為我生成HTML代碼覆蓋率報告。

希望嘗試這個也可以解決您的問題。

我在USB設備上運行jacoco時遇到了同樣的問題。 使用Genymotion解決了這個問題。

這個警告似乎無關緊要

掛載根文件系統讀寫時,錯誤消息消失了

mount -o remount,rw rootfs /

,只是為所有用戶設置寫權限(只在模擬器上執行此操作!!!,它真的不安全)

chmod 777 /

不幸的是,我的測試在之前和之后都被打破了,改變它並沒有解決它們。

因此,除非存在真正的問題,否則您可以將其視為不需要操作的消息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM