【问题标题】:Gradle tests report for Android TestsAndroid 测试的 Gradle 测试报告
【发布时间】:2015-04-27 15:50:06
【问题描述】:

我可以为 android 测试提供 gradle 测试报告吗?我想直接在终端中获得报告。每次测试通过、失败或跳过时,我都希望在终端中打印带有测试名称和状态的报告。

对于单元测试,我可以将其添加到 gradle 文件以获取报告:

tasks.withType(Test) {
    testLogging {
        exceptionFormat "full"
        events "passed", "skipped", "failed"
    }
}

我没有找到任何安卓测试的解决方案。

【问题讨论】:

    标签: android gradle android-gradle-plugin build.gradle


    【解决方案1】:

    你可以试试这个(添加到应用程序/库build.gradle

    tasks.withType(com.android.build.gradle.internal.tasks.AndroidTestTask) { task ->
        task.doFirst {
            logging.level = LogLevel.INFO
        }
        task.doLast {
            logging.level = LogLevel.LIFECYCLE
        }
    }
    

    【讨论】:

    • 我不知道这段代码应该做什么,但至于“我想在终端上打印带有测试名称和状态的报告。” Sandro Machado 问这是行不通的。除非需要更多配置。
    • 它基本上告诉Gradle将androidTest测试的结果输出到终端,我们在几个项目中使用它并在构建的输出中查看测试结果。
    • 我查看了来自 Google 的基本 Espresso 样本——github.com/googlesamples/android-testing/tree/master/ui/…——然后在那里添加了这些行。运行./gradlew cC 不会在控制台上打印任何测试。我错过了什么吗?
    • 我克隆了你的 repo -- github.com/artem-zinnatullin/qualitymatters -- 我在那里运行了./gradlew cC .. 控制台上什么也没有。正如我在回答中所说,无论是否使用--info 运行的解决方法都将打印测试。顺便说一句,关于质量的好文章!
    • 哈哈,谢谢 :) 正如您在此处看到的 travis-ci.org/artem-zinnatullin/qualitymatters/builds/104003598 在输出末尾有 androidTest 结果,因此它绝对适用于#qualitymatters 中的 Gradle 和 Android Gradle 插件版本。您能否检查一下在您的项目中更改 Gradle 或 Android Gradle 插件是否有帮助?
    【解决方案2】:

    向平台工具团队提交了一个仍未解决的错误:

    https://code.google.com/p/android/issues/detail?id=182307

    您可以投票以提供帮助。解决方法对我不起作用,但如果您使用 Gradle Plugin >= 1.5.0,您可以在启用信息日志的情况下运行命令,如下所示:

    ./gradlew cC --info

    然后您会看到打印的测试没有额外的配置

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      您是否尝试过调查app/build/reports/tests/debug/index.htmlapp/build/test-results/

      通过使用new test support library,您应该可以在那里找到您的报告,无需额外配置。

      【讨论】:

      • 我知道,但我想直接在终端中获取报告。每次测试通过、失败或跳过时,我都希望在终端中打印带有测试名称和状态的报告。
      • 好的,那么请更新您的问题以包含该信息。
      • 完成。感谢您的建议。
      【解决方案4】:

      我进行了一些调查,在终端中显示 unitTests 和 AndroidTests 的通用变体在 gradle 终端命令上放置了“--debug”选项。

      例子:

      ./gradlew cleanTestDebugUnitTest testDebugUnitTest cleanConnectedDebugAndroidTest connectedDebugAndroidTest --debug

      【讨论】: