Vil*_*oši 9 code-coverage jacoco android-gradle-plugin android-instrumentation
我继承了一个android项目来设置代码覆盖率.没有为Android做太多事情,而且几乎没有做太多事情,我开始寻找一个有用的教程.令人惊讶的是,前几个教程非常有用,我能够包含jacoco gradle插件并启用代码覆盖.使用jenkins我甚至生成了一份报道报告.到目前为止一切都很好.
然而,在看到报告时,我闻到了一些可疑的东西.测试与覆盖率似乎太小了.进一步的调查揭示了罪魁祸首.
测试本身更多地是作为功能而不是单元编写的.那没关系.但是,项目库的模块中没有测试.相反,库测试是在gui模块中编写的(因为这是使用库的地方).
因此,即使测试涵盖了大多数库功能,也仅为gui模块的内容生成覆盖.
项目
- 桂模块
----桂源
----所有的测试
- 图书馆模块
----图书馆来源
不,我一直在寻找一个有效的解决方案.不幸的是,我能够找到的是如何将单元和集成.exec测试覆盖结果组合成一个报告(或其他基于单元测试的解决方案 - 其中没有一个适用于仪器测试).
我需要的是基于Gui模块测试从库模块生成源代码.
因为我在这里的黑暗中磕磕绊绊,甚至是那样的东西,远远可能吗?
对于阅读本文的任何人...如果您遇到同样的问题,那么是时候开始用头撞墙了...
今天我很幸运地偶然发现了这个:https://issuetracker.google.com/issues/37004446#comment12
实际的“问题”似乎是,图书馆项目“总是”发布类型。因此,它们不包含“必要的检测设置”(除非您也为发布启用代码覆盖率,尽管我还没有测试过)。
因此,解决方案是在要发布的库中专门启用“调试”构建(如上所述,默认为发布类型):
android {
publishNonDefault true
}
Run Code Online (Sandbox Code Playgroud)
然后,在使用库的项目中,指定一个debugCompile依赖(发布编译可以使用“默认”发布配置):
dependencies {
debugCompile project(path: 'library', configuration: 'debug')
releaseCompile project('library')
}
Run Code Online (Sandbox Code Playgroud)
当然(我认为这是理所当然的),请记住为库启用测试覆盖率:
android {
buildTypes {
debug {
testCoverageEnabled true
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |