У меня есть проект Android (созданный Cordova), который я хочу добавить (контрольно-измерительные) тесты. Он должен тестировать только один MainActivity.java.
Обычно это означает добавление некоторых зависимостей к build.gradle и создание файла /src/androidTest/java/org/example/package/MainActivityTest.java с классом MainActivityTest и некоторыми методами тестирования. (В Android Studio я даже могу сгенерировать их с помощью Run → "Record Espresso Test" - так просто и работает).
К сожалению, теперь у меня есть требование, чтобы эти тестовые файлы действительно находились вне каталога проекта. Должны быть только минимальные изменения в существующем проекте Кордовы (поскольку он регенерируется и обрабатывается как артефакт сборки). MainActivity.java лучше всего находиться в той же корневой папке, где проект Android находится в /android.
Как я могу это достичь?
Изменения build.gradle могут быть добавлены в файл build-extras.gradle, который уже содержит реальный build.gradle, поэтому об этом позаботятся.
Но я понятия не имею, как разместить MainActivityTest.java вне структуры папок проекта и все еще иметь возможность запускать его внутри проекта.
Для iOS вы можете связать внешние файлы с проектом с абсолютными путями. Что-то вроде этого было бы идеальным и здесь.
Я посмотрел на sourceSets, но я не уверен, как интегрировать его в проект Android от Cordova, у которого уже есть этот параметр по умолчанию (я думаю?) sourceSets:
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
...
}

