我在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。
你知道什么是错的吗?任何想法都表示赞赏。感谢。
答案 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"]
}