相关疑难解决方法(0)

使用gradle的多项目测试依赖项

我有一个多项目配置,我想使用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编译测试文件.

dependencies build multi-project gradle

133
推荐指数
13
解决办法
6万
查看次数

我们如何在Android库模块中继承测试类?

我有一个带有两个库模块的Android Studio项目:foo-modulebar-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插件.

android android-gradle-plugin

18
推荐指数
1
解决办法
1554
查看次数