2017-02-14 89 views
0

目前,我正在研究Android上的GUI自動化測試,由於某種原因,我需要一個工具,可以從手動測試生成代碼覆蓋率報告。 經過漫長的搜索,我發現JacocoEmma在他們的網站上提到了手動方法。 但不幸的是,互聯網上沒有任何up-to-date-working example如何從Android應用程序(Android工作室和Gradle)手動測試獲得代碼覆蓋

我已經嘗試了很多建議解決方案,例如,https://groups.google.com/forum/#!searchin/jacoco/manual $ 20android%7Csort:date/jacoco/vx0g_6TKY8Q/0Tg3fX84CAAJ。

它產生的coverage.exec但文件的大小是隻有少數字節(當然,Jacoco未能生成任何報告。)

這是我曾嘗試:https://github.com/kindraywind/MyDummy

在應用/build.gradle

apply plugin: 'jacoco' 
jacoco { 
toolVersion ="0.7.8+" //I did try "0.7.4+" as the suggest. 
} 

task jacocoTestReport(type: JacocoReport) { … } 

在jacoco-agent.properties

destfile=/storage/sdcard/coverage.exec

在應用程序/ SRC /主/ AndroidManifest.xml`

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在MainActivity.java

protected void onStop() 
{ 
super.onStop(); 
if(BuildConfig.DEBUG) 
{ 
String TAG = "jacoco"; 
try { 
String covPath = Environment.getExternalStorageDirectory().getPath() +  "/coverage.exec"; 
File coverageFile = new File(covPath); 
Class<?> emmaRTClass = Class.forName("com.vladium.emma.rt.RT"); 
Method dumpCoverageMethod =  emmaRTClass.getMethod("dumpCoverageData",coverageFile.getClass(),  boolean.class, boolean.class); 
dumpCoverageMethod.invoke(null, coverageFile, true, false); 
} catch (Exception e) { 
} 

} 

}

模擬器是Nexus 5的API 19(我曾嘗試大部分版本)

來自設備的日誌 EMMA:runtime cov erage數據合併到[/storage/sdcard/coverage.exec] {在11毫秒}

運行後的日誌./gradlew jacocoTestReport Unable to read execution data file /Users/MyDummy/app/coverage.exec

如果相關我使用OSX10.12.3。

綜上所述,我需要知道(或任何工作示例)如何獲取時的代碼覆蓋率:應用程序手動

  • 測試。
  • 在Android應用程序中。
  • 哪個使用Gradle而不是Maven或Ant。
  • Android Studio不是Eclipse。

我看不出什麼,真的很感謝您的幫助。

回答

0

我已經在手動測試at my blog期間提供了有關如何獲取代碼覆蓋範圍的詳細操作指南。在它之後,您應該獲得代碼覆蓋率報告。你似乎正朝着正確的方向前進,但請仔細閱讀這篇文章。

一點更先進和完整的解決方案描述in another blog post。它使用NanoHttpd在設備/仿真器上創建REST服務器。該API提供了一個將報告文件作爲響應寫入的單個端點。此外,還提供了一個自定義(更快)的CSV報告編寫器。

如果你想討論GUI自動化測試(與Android設備)隨時聯繫我進一步:)

+1

萬一博客鏈接去死在未來,如果你提供了一個簡單的解釋將是有益的幫助未來的讀者解決同樣的問題。試想一下沒有鏈接的答案,並嘗試添加缺少的所有信息以成功解決問題。 – Adalee

相關問題