【问题标题】:How to obtain code coverage from manual testing on android application (Android studio and gradle)如何从android应用程序(Android studio和gradle)的手动测试中获得代码覆盖率
【发布时间】:2017-02-14 06:11:05
【问题描述】:

目前,我正在研究 Android 上的 GUI 自动化测试,出于某种原因,我需要一个可以通过手动测试生成代码覆盖率报告的工具。 经过长时间的搜索,我发现JacocoEmma 在他们的网站上提到了手动方法。 但是很遗憾,网上没有up-to-date-working example

我尝试了很多建议的解决方案,例如https://groups.google.com/forum/#!searchin/jacoco/manual$20android%7Csort:date/jacoco/vx0g_6TKY8Q/0Tg3fX84CAAJ。

它生成了一个coverage.exec,但文件的大小只有几个字节(当然,Jacoco 无法从中生成任何报告。)

这是我尝试过的:https://github.com/kindraywind/MyDummy

在 app/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

在 app/src/main/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:运行时覆盖数据合并到 [/storage/sdcard/coverage.exec] {in 8 ms}

运行后的日志 ./gradlew jacocoTestReport Unable to read execution data file /Users/MyDummy/app/coverage.exec

如果相关,我正在使用 OSX10.12.3。

总而言之,我需要知道(或任何工作示例)如何在以下情况下获得代码覆盖率:

  • 手动测试应用程序。
  • 在 Android 应用程序上。
  • 使用 Gradle 而不是 Maven 或 Ant。
  • Android Studio 不是 Eclipse。

我看不到出路,非常感谢您的帮助。

【问题讨论】:

    标签: android android-studio code-coverage manual-testing


    【解决方案1】:

    我提供了关于如何在手动测试期间获得代码覆盖率的详细操作指南at my blog。在它之后,您应该获得代码覆盖率报告。您似乎朝着正确的方向前进,但请仔细阅读该帖子。

    in another blog post 描述了更高级和完整的解决方案。它使用NanoHttpd 在设备/模拟器上创建一个 REST 服务器。 API 提供将报告文件作为响应写入的单个端点。此外,还提供了一个自定义(速度更快)的 CSV 报告编写器。

    如果您想进一步讨论 GUI 自动化测试(与 Android 相关),请随时与我联系 :)

    【讨论】:

    • 万一博客链接在未来失效,如果你提供一个简短的解释来帮助未来的读者解决同样的问题,将会很有帮助。想象一下您的答案没有链接,并尝试添加所有缺少的信息以成功解决问题。
    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2014-05-03
    • 1970-01-01
    • 2014-04-16
    • 2017-08-17
    相关资源
    最近更新 更多