1

我按照gradle 文档在 Java 项目中按照测试类型分离源文件,我想在 Android 库项目中做同样的事情。默认情况下,Android 插件com.android.library支持两种类型的测试目录testandroidTest. 如何添加说integTest我想要运行的内容test

sourceSets {
     integTest {
         java.srcDir file('src/integTest/java')
         resources.srcDir file('src/integTest/resources')
     }
}

当我尝试将上述内容添加sourceSet到 时build.gradle,出现错误

错误:Android Gradle 插件无法识别 SourceSet 'integTest'。也许你拼错了什么?

由于Android Gradle Plugin 不支持sourceSets像Java Plugin 这样的自定义,有没有其他方法可以解决这个问题?

4

1 回答 1

1

错误的主要原因是定义sourceSetfor integTestinside 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'
}
于 2019-01-29T04:51:14.727 回答