我有一个多项目配置,我想使用gradle.
我的项目是这样的:
项目A.
src/main/java
src/test/java
项目B.
src/main/java
(取决于src/main/java
在项目A) src/test/java
(取决于src/test/java
在项目A) 我的Project B build.gradle
文件是这样的:
apply plugin: 'java'
dependencies {
compile project(':ProjectA')
}
Run Code Online (Sandbox Code Playgroud)
该任务compileJava
工作得很好,但compileTestJava
不会从项目A编译测试文件.
我有一个带有两个库模块的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
插件.