Android Local Unit测试,带有来自命令行的覆盖率报告

时间:2015-11-16 15:28:25

标签: android unit-testing code-coverage jacoco

我正在开发一个Android新项目。目前,我正在使用Android studio作为IDE。我需要运行单元测试和系统(CI)测试流程,这些测试流程可以在本地计算机(JVM)和仿真器/真实设备上运行以进行检测。

请注意,我正在通过命令行运行所有单元测试。

为了获得我使用Jacoco的仿真器/真实设备的代码覆盖率。 并运行以下命令:gradlew createDebugCoverageReport 但是,我找不到任何方法从命令行运行带有覆盖率报告的本地机器单元测试。 唯一的方法是通过选择“使用代码覆盖率运行XXX”从Android工作室运行它:

enter image description here

请告知是否可以从命令行运行本地单元测试覆盖范围。并将报告作为html文件获取?

谢谢, Zachi

5 个答案:

答案 0 :(得分:3)

如果我理解正确,您正尝试使用基于IntelliJ的Android工作室的覆盖能力来运行测试。

基本上可以使用IntelliJ的命令行工具完成。 您可以在这里阅读更多相关信息,但它通常允许您通过命令行完成从GUI完成的所有操作:

IntelliJ creating command line tools

有关IntelliJ工具覆盖范围的更多常规信息,请参阅此处:

IntelliJ Code coverage

希望它有所帮助,祝你好运。

答案 1 :(得分:1)

目前,在gradle Android工具中没有默认任务为 Junit(本地)测试创建报告。 但是,创建它们很容易。

只需按照说明在此处集成自定义jacoco.gradle文件:

https://gist.github.com/mrsasha/384a19f97cdeba5b5c2ea55f930fccd4

您将执行以下任务:test[Flavor]UnitTestCoverage

因此,要生成报告,您只需:

$ ./gradlew test[Flavor]UnitTestCoverage

答案 2 :(得分:1)

可以使用android studio生成报告,在运行覆盖率测试后,将出现结果窗口,单击带有红色边框的按钮

查看此图片:

image

答案 3 :(得分:0)

如果您在使用gradle包装器或./gradlew tasks,则在终端上运行gradle tasks会得到可用验证任务的列表(请参见下面的屏幕截图):

enter image description here

您可以参考此link以获得更全面的测试命令行。

答案 4 :(得分:0)

您可以使用 testDebugUnitTest,将其作为 ./gradlew <your_module_name>:testDebugUnitTest 运行,它将运行与此特定模块相关的测试 + 它将在 your_module/build/reports/tests/testDebugUnitTest 文件夹下生成包含覆盖范围的 html 报告。< /p>