如何在另一个模块的androidTest目录中使用代码

时间:2014-12-06 14:23:33

标签: android testing gradle

我在AndroidStudio项目中添加了两个模块:

app-base
|
|----src
      |____androidTest
                |________MyTestBase.java          

app
|
|----src
      |____androidTest
                |________MyTest.java

一些常见的测试类在app-base的androidTest中定义,并在app'androidTest中使用。

我尝试在app的build.gradle中添加以下代码:

    evaluationDependsOn(':app-base')

    compile project(':app-base')

    androidTestCompile project(':app-base')

我在settings.gradle中包含了app-base和app, gradlew项目的输出是:

Root project 'MyProject'
+--- Project ':app-base' 
+--- Project ':app'

通过这种方式没有编译错误,但是当我在ide中运行MyTest时,它表示找不到类MyTestBase。

你知道什么是错的吗?任何想法都表示赞赏。感谢。

3 个答案:

答案 0 :(得分:5)

我建议你采用以下策略:创建一个新模块test-utils并将MyTestBase.java放在此模块的主要来源中。

test-utils
|
|----src
      |____main
             |________MyTestBase.java

然后将此test-utils作为测试依赖项添加到需要它的所有模块中

androidTestCompile project(':test-utils')

答案 1 :(得分:0)

一段时间以来,我一直在寻找解决方案,最后找到了对我有用的东西。

这将使您可以将常见的测试类放在另一个模块中。

android {
    ...

    sourceSets {
        androidTest.java.srcDirs += ["${project('match the module name that is currently in the dependencies').projectDir}/src/androidTest/java"]
    }
}

因此对于上面的示例,它可能看起来像

androidTest.java.srcDirs += ["${project(':appbase').projectDir}/src/androidTest/java"]

答案 2 :(得分:0)

Stimsoni 的答案几乎没有变化,这终于对我有用了。 我将此添加到我的应用程序gradle中:

sourceSets {
    test.java.srcDirs += ["${project(':app-base').projectDir}/src/test/java"]
}