使用 Orchestrator 的 android 测试覆盖率

Posted

技术标签:

【中文标题】使用 Orchestrator 的 android 测试覆盖率【英文标题】:Coverage for android tests using orchestrator 【发布时间】:2018-06-11 16:32:13 【问题描述】:

我正在开展一个项目,我们正在尝试使用 android TEST ORCHESTRATOR,因为它具有隔离崩溃的明显好处。但是在执行测试套件时,在我看来,当编排器为每个测试用例启动一个新流程时,套件执行的测试覆盖率报告总是显示不完整的数据(主要是测试中存在的最后一个测试用例的数据套房)。

所以我想知道有没有办法克服这个问题,并为测试套件中存在的所有插桩测试生成 jacoco 代码覆盖率报告。

【问题讨论】:

我还在寻找这个问题的答案,任何想法也被邀请,不需要提供确切的解决方案。 我发现了一个与此类似或相同的问题,我需要删除编排以获取 androidTest 代码覆盖率。还是没有解决。你可以在这里看到我们的 gradle:***.com/questions/48427286/… 我们也还没有制定出编排位,也想知道。这是我能找到的唯一相关跟踪器问题:issuetracker.google.com/issues/71989799 记录了这个错误:issuetracker.google.com/issues/72758547 @Shredder 你最后做了什么? @IslamSalah 我唯一的观察结果是,对于每个测试用例,都会生成一个单独的覆盖文件,所以目前我正在构建一个系统来继续监听路径(覆盖文件的位置被倾倒),然后将所有覆盖率报告整理成一份。但希望谷歌尽快推出更优化的解决方案。如果您也在尝试其他方法,请告诉我。 【参考方案1】:

如果您使用的是 android 测试编排器,这就是问题所在。有一个开放的错误报告:https://issuetracker.google.com/issues/72758547

我知道的唯一解决方案是在修复发布之前禁用 android 测试编排。

在我的 Android Java build.gradle 中,我不得不像这样注释掉测试编排器:

android 
...
    testOptions 
        // temporarily disable the orchestrator as this breaks coverage: https://issuetracker.google.com/issues/72758547
        //execution 'ANDROID_TEST_ORCHESTRATOR'
    ...
    

【讨论】:

感谢您指出显而易见的问题,但我正在尝试找到一种方法来通过一些解决方法来克服该错误,因为在我测试中的应用程序在完成测试套件执行时不会持续存在而不会崩溃. 哎呀 - 没有意识到您已经知道错误报告!可能仍然可以帮助像我一样只是希望他们的报道报告重新开始工作的人:) 是的,那是真的 :) 无论如何,谢谢,如果您遇到更多相关信息,请告诉我。【参考方案2】:

上述问题现已修复,最新的 gradle 版本适用于所有 android 设备。

【讨论】:

以上是关于使用 Orchestrator 的 android 测试覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到 android.support.test.orchestrator.OrchestratorService

6.1 Orchestrator注册

MySQL高可用工具Orchestrator系列一:单节点模式安装

MySQL高可用工具Orchestrator raft模式部署

MySQL高可用工具Orchestrator raft模式部署

orchestrator常用命令