Как разделить исходные файлы для каждого типа теста в проекте библиотеки Android?
Я следил за подготовкой документации для разделения исходных файлов по типам тестов в проекте Java, и я хотел сделать то же самое в проекте библиотеки Android. По умолчанию плагин Android com.android.library
поддерживает два типа тестовых каталогов test
а также androidTest
, Как мне добавить сказать integTest
который я хотел запустить test
?
sourceSets {
integTest {
java.srcDir file('src/integTest/java')
resources.srcDir file('src/integTest/resources')
}
}
Когда я пытаюсь добавить выше sourceSet
к build.gradle
Я получаю ошибку
ОШИБКА: SourceTet "Integest" не распознается плагином Android Gradle. Возможно, вы что-то написали неправильно?
Поскольку плагин Android Gradle не поддерживает пользовательские sourceSets
как плагин Java, есть ли другой способ решить эту проблему?
1 ответ
Основной причиной ошибки является определение sourceSet
за integTest
внутри android
, просто переместив его наружу, решил проблему. Смотрите ниже для правильного build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
sourceSets {
integTest {
java.srcDir file('src/integTest/java')
resources.srcDir file('src/integTest/resources')
}
}
configurations {
integTestCompile.extendsFrom testCompile
integTestRuntime.extendsFrom testRuntime
}
task integTest(type: Test) {
group = LifecycleBasePlugin.VERIFICATION_GROUP
description = 'Runs the integration tests.'
testClassesDirs = sourceSets.integTest.output.classesDirs
classpath = sourceSets.integTest.runtimeClasspath
}
check.dependsOn integTest
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
integTestImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}