【问题标题】:Separate integration test task on gradle with android使用 android 在 gradle 上单独的集成测试任务
【发布时间】:2015-02-17 23:59:56
【问题描述】:

我想运行在路径中包含“集成”字样的测试,以与默认测试运行一起排除,但我想在一个单独的任务中一起运行它们。目前我有一个基本的测试配置:

sourceSets {
    androidTest.setRoot('src/test')

    integrationTest.setRoot('src/test')
}

...

androidTestCompile 'junit:junit:4.11'
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1'
androidTestCompile files('libs/android-junit-report-1.5.8.jar')
androidTestCompile 'com.squareup:fest-android:1.0.8'
androidTestCompile 'org.robolectric:robolectric:2.3'

integrationTestCompile 'junit:junit:4.11'
integrationTestCompile 'com.jayway.android.robotium:robotium-solo:5.1'
integrationTestCompile files('libs/android-junit-report-1.5.8.jar')
integrationTestCompile 'com.squareup:fest-android:1.0.8'
integrationTestCompile 'org.robolectric:robolectric:2.3'

...

androidTest {
    include '**/*Test.class'
    exclude '**/espresso/**/*.class'
    exclude '**/integration/**'
}

task integrationTest(type: Test) {
    include '**/integration/**'
}

这会导致在 AS 中同步 gradle 时出错:

Warning: project ':ProjectName': Unable to resolve all content root directories
Details: java.lang.NullPointerException: null

但如果我删除了 integrationTest 任务,它就不会发生。此外,在任务存在的情况下,我可以运行“integrationTest”任务,但这会导致另一个错误:

Error:Could not determine the dependencies of task ':ProjectName:integrationTest'.
A base directory must be specified in the task or via a method argument!

【问题讨论】:

    标签: android testing gradle android-gradle-plugin


    【解决方案1】:

    这不是很明显,但是这个错误是由于在你的任务定义中没有定义testClassesDir引起的。

    task integrationTest(type: Test) {
        include '**/integration/**'
        testClassesDir = file('build/intermediates/classes')
    }
    

    Gradle User Guide 中描述了 Java 插件的类似内容,但它并未完全转化为 Android 插件。我还没有弄清楚所有细节,但我会在我弄清楚时更新这个答案。

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 2013-08-06
      • 2017-10-30
      • 1970-01-01
      相关资源
      最近更新 更多