当前位置: 首页 > 知识库问答 >
问题:

用于库模块覆盖率的Android仪器测试

宗政文彬
2023-03-14

我继承了一个Android项目来设置代码覆盖率。我没有为Android做太多事情,而且几乎没有什么成绩,我开始寻找一个有用的教程。令人惊讶的是,前几个教程非常有帮助,我能够包含jaco gradle插件并启用代码覆盖率。使用詹金斯,我甚至生成了一份报道报告。到目前为止,一切看起来都很好。

然而,当我看到这份报告时,我闻到了一些可疑的味道。测试与覆盖率的比率似乎太小了。进一步调查发现了罪魁祸首。

测试本身更像是功能性的,而不是单元性的。那很好。但是,项目库的模块中没有测试。相反,库测试是在gui模块中编写的(因为这是使用库的地方)。

因此,即使测试涵盖了大部分库功能,也仅为来自gui模块的内容生成覆盖范围。

项目

- Gui模块

---- 指南源代码

----所有测试

--库模块

----图书馆资源

不,我一直在寻找一个可行的解决方案。不幸的是,我所能找到的只是如何将单元和集成. exec测试覆盖率结果组合到一个报告中(或其他基于单元测试的解决方案——没有一个适用于仪表解决方案)。

我需要的是基于Gui模块测试从Library模块生成源覆盖。

当我在黑暗中蹒跚前行的时候,这样的事情有可能发生吗?

共有1个答案

阮雅达
2023-03-14

对任何人来说,如果你有同样的问题,是时候开始把头撞到墙上了。。。

今天我很幸运地发现了这个:https://issuetracker.google.com/issues/37004446#comment12

实际的“问题”似乎是,库项目“总是”发布类型。因此,它们不包含“必要的检测设置”(除非您也为发布启用代码覆盖,尽管我还没有测试它)。

因此,解决方案是在要发布的库中专门启用“调试”构建(如前所述,默认为发布类型):

android { 
        publishNonDefault true 
} 

然后,在使用库的项目中,指定一个debugCompile依赖项(发布编译可以使用“默认”发布配置):

dependencies { 
        debugCompile project(path: 'library', configuration: 'debug') 
        releaseCompile project('library') 
} 

当然(我认为这是理所当然的),记住为库启用测试覆盖:

android { 
        buildTypes { 
                debug { 
                        testCoverageEnabled true 
                } 
        } 
} 
 类似资料:
  • 我有这样的项目结构: 模块应用程序 模块-登录 模块注册 问题:我有上面喜欢Android项目的结构,能够生成jaco代码覆盖率报告,并且可以用于声纳仪表板。我面临的espresso测试问题,它只显示模块应用程序的代码覆盖率,而不显示其他模块的代码覆盖率。Espresso测试正在运行用例流,如注册,然后从其他两个模块登录和调用类,但其他两个模块的覆盖率始终为0%。 < li >我想了解espres

  • 11.3. 测试覆盖率 就其性质而言,测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过:“测试能证明缺陷存在,而无法证明没有缺陷。”再多的测试也不能证明一个程序没有BUG。在最好的情况下,测试可以增强我们的信心:代码在很多重要场景下是可以正常工作的。 对待测程序执行的测试的程度称为测试的覆盖率。测试覆盖率并不能量化——即使最简单的程序的动态也是难以精确测量的——但是有启发式方法

  • 我一直在尝试在JBoss服务器中实现JaCoCo离线代码覆盖,使用仪表化的EAR进行部署和jacococagent.jar,以便跟踪针对所述JBoss运行的外部集成测试的代码覆盖。 我一直在关注这样的指南: http://www.eclemma.org/jacoco/trunk/doc/offline.html http://automationrhapsody.com/code-coverage

  • 我正在对正在开发的应用程序进行模块化,自从将仪器测试拆分为应用程序模块以来,我的覆盖率下降了20%以上。 该应用程序被拆分为,,,其中是Android库,其他2个模块是应用程序。该应用程序的大多数功能将存在于中,目前主要通过现在驻留在应用程序中的检测测试。 有没有办法让应用程序模块中的检测测试生成包含库模块源的覆盖率报告? 我在这里看了这个问题,它与我的困境有很大的相似之处,但这似乎已经过时了已被

  • 我有一个类似这样的项目结构: -应用 --模块 2 //库模块 --模块3 //库模块 我正在为我的多模块Android项目编写仪器测试用例,其中包含jaco代码覆盖范围。如果我从“app”模块执行检测测试用例,则仅为“app”模块类生成代码覆盖率。 因此,为了获得“模块2”的代码覆盖率 当我在非应用程序模块中执行插装测试用例,无法启动主活动,插装期间应用程序未启动,测试用例失败时,会出现问题。

  • 我有一个maven多模块项目。 所有测试都在称为tests/的单个模块中,所有代码都在单独的模块中。 有没有办法让我得到代码覆盖率?