然而,在看到报告时,我闻到了一些可疑的东西.测试与覆盖率似乎太小了.进一步的调查揭示了罪魁祸首.@H_301_3@
测试本身更多地是作为功能而非单元编写的.那没关系.但是,项目库的模块中没有测试.相反,库测试是在gui模块中编写的(因为这是使用库的地方).@H_301_3@
因此,即使测试涵盖了大多数库功能,也仅为gui模块的内容生成coverage.@H_301_3@
Project@H_301_3@
— Gui module@H_301_3@
—- gui sources@H_301_3@
—- all the tests@H_301_3@
— Library module@H_301_3@
—- library sources@H_301_3@
不,我一直在寻找一个有效的解决方案.不幸的是,我能够找到的是如何将单元和集成.exec测试覆盖结果组合成一个报告(或其他基于单元测试的解决方案 – 其中没有一个适用于仪器测试).@H_301_3@
我需要的是基于Gui模块测试从库模块生成源代码.@H_301_3@
因为我在这里的黑暗中磕磕绊绊,甚至是那样的东西,远远可能吗?@H_301_3@
解决方法
今天我很幸运地偶然发现了这个:https://issuetracker.google.com/issues/37004446#comment12@H_301_3@
实际的“问题”似乎是,库项目“始终”是发布类型.因此,它们不包含“必要的仪器设置”(除非您为发布启用代码覆盖,尽管我还没有对其进行测试).@H_301_3@
所以解决方案是在要发布的库中专门启用“debug”构建(如上所述,默认是发布类型):@H_301_3@
android { publishNonDefault true }
然后,在使用库的项目中,指定debugCompile依赖项(发布编译可以使用“默认”发布配置):@H_301_3@
dependencies { debugCompile project(path: 'library',configuration: 'debug') releaseCompile project('library') }
当然(我认为这是理所当然的),请记住为库启用测试覆盖:@H_301_3@
android { buildTypes { debug { testCoverageEnabled true } } }