Как использовать код в каталоге 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"]