如何让Gradle for Android从其他测试代码中查找库的测试代码?

Bru*_*uce 6 android gradle android-library android-testing android-gradle-plugin

我有一个Android应用程序,下面有两个库层.每个库都有自己的测试代码.我想上层库的测试代码扩展下层库的测试代码,但我无法弄清楚如何让Gradle找到下层库的测试代码(它只找到生产代码).

我的文件结构如下所示:

myproject/
 + myapp/
   + src/
     + main/
       + java
         + com/myapp
 + lib1/
   + src/
     + main/
       + java
         + com/myapp/lib1
     + androidTest
       + java
         + com/myapp/lib1/test
 + lib2/
   + src/
     + main/
       + java
         + com/myapp/lib2
     + androidTest
       + java
         + com/myapp/lib2/test
Run Code Online (Sandbox Code Playgroud)

该应用程序的gradle文件如下所示:

apply plugin: 'com.android.application'
android { ... }
dependencies {
  compile project(':lib2')
} 
Run Code Online (Sandbox Code Playgroud)

lib2的gradle文件如下所示:

apply plugin: 'com.android.library'
android { ... }
dependencies {
  compile project(':lib1')
} 
Run Code Online (Sandbox Code Playgroud)

lib1的gradle文件如下所示:

apply plugin: 'com.android.library'
android { ... }
Run Code Online (Sandbox Code Playgroud)

当我运行"gradle connectedCheck"时,我得到了这个:

...
:lib2:generateDebugTestSources UP-TO-DATE
:lib2:compileDebugTestJava
myproject/lib2/src/androidTest/java/com/myapp/lib2/test/SubClass.java:10: error: package com.myapp.lib1.test does not exist
import com.myapp.lib1.test.BaseClass;
Run Code Online (Sandbox Code Playgroud)

我已经尝试将各种androidTestCompile行添加到lib2的gradle文件的依赖项部分,但它们都没有帮助.

有谁知道如何使这项工作?

编辑:对不起,我没有提到我在myproject文件夹中也有一个如下所示的settings.gradle:

include ':lib1'
include ':lib2'
include ':myapp'
Run Code Online (Sandbox Code Playgroud)

小智 1

问题是你的 gradle 不知道 myapp、lib1 和 lib2 模块的连接。

尝试在使用其他模块的模块中添加一些settings.gradle。对于您的结构,我建议在根目录中创建额外的 gradle 文件:

例如在我的项目/

设置.gradle:

rootProject.name = 'myproject'
include 'myapp'
include 'lib1'
include 'lib2'
Run Code Online (Sandbox Code Playgroud)

然后为所有模块编写 gradle.build,在其中澄清所有项目的类型,例如 Ear 等。

您也可以单独连接模块。