android-gradle – 用于库模块覆盖的Android检测测试

前端之家收集整理的这篇文章主要介绍了android-gradle – 用于库模块覆盖的Android检测测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我继承了一个 android项目来设置代码覆盖率.没有为 Android做太多事情,而且几乎没有做太多的事情,我开始寻找一个有用的教程.令人惊讶的是,前几个教程非常有用,我能够包含jacoco gradle插件并启用代码覆盖.使用jenkins我甚至生成了一份报道报告.到目前为止一切都很好.

然而,在看到报告时,我闻到了一些可疑的东西.测试与覆盖率似乎太小了.进一步的调查揭示了罪魁祸首.

测试本身更多地是作为功能而非单元编写的.那没关系.但是,项目库的模块中没有测试.相反,库测试是在gui模块中编写的(因为这是使用库的地方).

因此,即使测试涵盖了大多数库功能,也仅为gui模块的内容生成coverage.

Project

— Gui module

—- gui sources

—- all the tests

— Library module

—- library sources

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

我需要的是基于Gui模块测试从库模块生成代码.

因为我在这里的黑暗中磕磕绊绊,甚至是那样的东西,远远可能吗?

解决方法

对于读这篇文章的人来说……如果你有同样的问题,是时候开始敲打你的头了……

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

实际的“问题”似乎是,库项目“始终”是发布类型.因此,它们不包含“必要的仪器设置”(除非您为发布启用代码覆盖,尽管我还没有对其进行测试).

所以解决方案是在要发布的库中专门启用“debug”构建(如上所述,默认是发布类型):

android { 
        publishNonDefault true 
}

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

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

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

android { 
        buildTypes { 
                debug { 
                        testCoverageEnabled true 
                } 
        } 
}

猜你在找的Android相关文章