Как использовать код в каталоге androidTest другого модуля
Я добавляю два модуля в свой проект AndroidStudio:
app-base
|
|----src
|____androidTest
|________MyTestBase.java
app
|
|----src
|____androidTest
|________MyTest.java
Некоторые общие тестовые классы определены в Android-приложении androidTest и используются в app'androidTest.
Я попытался добавить следующий код в app build.gradle:
evaluationDependsOn(':app-base')
compile project(':app-base')
androidTestCompile project(':app-base')
Я включил приложение app-base и app в settings.gradle, вывод проектов gradlew:
Root project 'MyProject'
+--- Project ':app-base'
+--- Project ':app'
Не компилируйте ошибку таким образом, но когда я запустил MyTest в ide, он сказал, что класс MyTestBase не найден.
Вы знаете, что случилось? Любые идеи приветствуются. Благодарю.
Ответы
Ответ 1
Предлагаю вам следующую стратегию: создать новый модуль test-utils
и поместить MyTestBase.java
в основные источники этого модуля.
test-utils
|
|----src
|____main
|________MyTestBase.java
Затем вы добавляете эти test-utils
в качестве тестовой зависимости во всех модулях, где это необходимо
androidTestCompile project(':test-utils')
Ответ 2
Я долго искал решение этой проблемы и, наконец, нашел то, что мне подходит.
Это позволит вам поместить общие классы тестирования в другой модуль.
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"]