Как разделить исходные файлы для каждого типа теста в проекте библиотеки Android? - PullRequest
0 голосов
/ 29 января 2019

Я следовал gradle docs для разделения исходных файлов по типам тестов в проекте 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 Plugin не поддерживает пользовательские sourceSets, такие как Java Plugin, есть ли другой способ решения этой проблемы?

1 Ответ

0 голосов
/ 29 января 2019

Основная причина ошибки - определение 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'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...