gpt4 book ai didi

android-gradle-plugin - 库模块覆盖率的 Android 仪器测试

转载 作者:行者123 更新时间:2023-12-04 04:24:11 25 4
gpt4 key购买 nike

我继承了一个 android 项目来设置代码覆盖率。没有为 android 做太多工作,在 gradle 方面做的也很少,我开始寻找有用的教程。令人惊讶的是,前几个教程非常有帮助,我能够包含 jacoco gradle 插件并启用代码覆盖率。使用 jenkins,我什至生成了一份覆盖率报告。到目前为止,一切看起来都很好。
然而,当我看到报告时,我闻到了一股腥味。测试与覆盖率似乎太小了。进一步调查发现了罪魁祸首。
测试本身更多地是作为功能而不是单元编写的。那没关系。但是,项目库的模块中没有测试。相反,库测试是在 gui 模块中编写的(因为这是使用库的地方)。
因此,即使大多数库功能都被测试覆盖了,但覆盖范围仅针对来自 gui 模块的内容。

Project

-- Gui module

---- gui sources

---- all the tests

-- Library module

---- library sources


不,我一直在寻找一个可行的解决方案。不幸的是,我所能找到的只是如何将单元和集成 .exec 测试覆盖率结果合并到一个报告中(或其他基于单元测试的解决方案——这些都不适用于仪器)。
我需要的是基于 Gui 模块测试从库模块中生成源代码覆盖率。
当我在这里的黑暗中跌跌撞撞时,甚至这样的事情,远程可能吗?

最佳答案

对于任何阅读本文的人......如果你有同样的问题,是时候开始用你的头撞墙了......

今天我很幸运地偶然发现了这个: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-gradle-plugin - 库模块覆盖率的 Android 仪器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45616769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com