使用Robolectric测试为项目添加设备上的仪表测试

时间:2016-06-16 12:44:21

标签: android gradle robolectric robolectric-gradle-plugin

我有一个使用Robolectric进行测试的Android项目。 build.gradle的相关部分看起来有点像这样:

apply plugin: 'robolectric'

robolectric {
    include '**/*Test.class'
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    androidTestCompile 'org.hamcrest:hamcrest-integration:1.1'
    androidTestCompile 'org.hamcrest:hamcrest-core:1.1'
    androidTestCompile 'org.hamcrest:hamcrest-library:1.1'
    androidTestCompile('junit:junit:4.12') {
        exclude module: 'hamcrest-core'
    }
    androidTestCompile('org.robolectric:robolectric:2.4') {
        exclude module: 'classworlds'
        exclude module: 'commons-logging'
        exclude module: 'httpclient'
        exclude module: 'maven-artifact'
        exclude module: 'maven-artifact-manager'
        exclude module: 'maven-error-diagnostics'
        exclude module: 'maven-model'
        exclude module: 'maven-project'
        exclude module: 'maven-settings'
        exclude module: 'plexus-container-default'
        exclude module: 'plexus-interpolation'
        exclude module: 'plexus-utils'
        exclude module: 'wagon-file'
        exclude module: 'wagon-http-lightweight'
        exclude module: 'wagon-provider-api'
    }
    androidTestCompile 'com.android.support:support-v4:21.0.3'
}

并且所有Robolectric测试都在src/androidTest/java/my/package/*Test.java。这一切都很完美。我可以将测试作为普通Gradle构建的一部分运行,也可以通过IntelliJ的JUnit GUI运行。

现在我需要添加一些不能使用Robolectric并且需要在真正的Android设备上运行的测试。鉴于我已经不得不在我的Robolectric测试中使用androidTest变体,如何将我的仪器化测试添加到此项目中,并且仍允许Robolectric测试在没有设备的情况下运行?

1 个答案:

答案 0 :(得分:1)

这是超级过时的设置,我建议:

  1. 使用最新稳定的 android gradle插件:

    buildscript {
      dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
      }
    }
    
  2. 删除 Robolectric gradle插件:

    //apply plugin: 'robolectric'
    
    //robolectric {
    //    include '**/*Test.class'
    //}
    
  3. 将测试源移至test文件夹

  4. androidTestCompile更改为testCompile
  5. 现在,您可以使用./gradlew test<Flavour>DebugUnitTest运行测试。您可以将工具测试添加到androidTest文件夹。

    还可以考虑将 Robolectric 升级到3.1版本