Com*_*are 18 android android-gradle-plugin
我有一个带有两个库模块的Android Studio项目:foo-module和bar-module.每个都实现一个库,foo-module定义一个策略接口,并bar-module依赖foo-module并实现这样的策略.foo-module有一个instrumentation tests(foo-module/src/androidTest/)来测试它的核心代码,使用存根策略实现,并且bar-module应该有自己的仪器测试.
我AbstractTests在一个类中定义了foo-module/src/androidTest/大部分实际测试.我还有一个StubTests类,foo-module/src/androidTest/它扩展AbstractTests并实现了abstract完成测试用例的必要方法(提供了策略的实现等).一切都很好.
在bar-module/src/androidTest/,我创建了一个BarStrategyTests专门用于镜像的类StubTests,但提供了实现的策略bar-module.但是,BarStrategyTests看不到AbstractTests,即使我compile project(':foo-module')在我的build.gradle文件中,并且主要(非测试)类bar-module可以在主要(非测试)类中正常工作foo-module.IOW,虽然project()依赖项处理常规代码,但它不处理androidTest/代码.我得到"错误:包com.commonsware.foo.test不存在".
我也尝试添加androidTestCompile project(':foo-module'),结果相同.
在模块之间共享仪器测试代码的方法是什么?
暂时,我可以克隆AbstractTests,但这不是一个很好的长期解决方案.
这个问题涵盖了普通Java的类似基础.有没有人在一个答案中尝试过这些选项并让它们用于Android仪器测试?第一个选项(将常用测试代码移动到另一个模块作为常规非测试代码)似乎是合理的,但我不知道其他两个是否适用于com.android.library插件而不是java插件.
Ole*_*dov 16
由于所有测试类(单元和仪器)都不是任何模块的一部分(包括aar),因此它们不能通过依赖于该模块而获得.我也遇到了这个问题,并通过创建test-module并将所有必需的类放入其中来解决它(src/main/java).因此,在您的情况下,您可以移动AbstractTests此模块并将此模块用作androidTestCompile依赖项.
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |