如何运行依赖于测试任务的自定义gradle插件

时间:2017-09-03 12:23:58

标签: android facebook gradle

我目前正在尝试使用此库在Android上运行ui测试。 https://github.com/facebook/screenshot-tests-for-android

我使用以下方式运行测试:

./gradlew verifyMode screenshotTests

在目录的根目录。

但是,我想要运行的是:

./gradlew test

我希望它可以运行屏幕截图测试以及我的ui测试。这可能是todo吗?我当前的构建文件:

buildscript {
    repositories {
        jcenter()
        mavenLocal()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        classpath 'com.facebook.testing.screenshot:plugin:0.4.2'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.facebook.testing.screenshot'

android {
    compileSdkVersion 24
    buildToolsVersion '24.0.3'

    defaultConfig {
        applicationId "sample"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "sample.TestRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:support-v4:24.2.0'
    compile project(':library')
    androidTestCompile 'com.android.support.test:runner:0.4'
    androidTestCompile 'com.azimolabs.conditionwatcher:conditionwatcher:0.1'
    androidTestCompile 'com.android.support.test:rules:0.4'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.0'
    androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
    androidTestCompile 'org.mockito:mockito-core:1.10.17'
    androidTestCompile 'com.android.support:support-annotations:24.2.1'
}

1 个答案:

答案 0 :(得分:0)

Gradle执行指定为命令行参数及其依赖项的任务。如果您只想在命令中指定test任务,但仍然执行任务verifyModescreenshotTests,则可以将这些任务注册为test任务的依赖项:

test {
    dependsOn 'verifyMode', 'screenshotTests'
}

但是,请注意,现在test任务的每次执行也会导致verifyModescreenshotTests及其各自的依赖项运行。由于test任务是build任务的依赖项,因此调用gradle build也会运行verifyModescreenshotTests,这可能是您不想要的。作为解决方案,您可以定义虚拟任务,该任务收集您的所有测试任务:

task allTests {
    dependsOn 'test', 'verifyMode', 'screenshotTests'
}

现在你可以调用gradle allTests,Gradle将只执行你想要执行的任务。