将支持库添加到Robolectric 2.3

时间:2014-08-05 02:14:03

标签: android android-support-library robolectric android-espresso

从这个template获得灵感后,我能够使用android和gradle进行roblolectric和espresso测试。关键是将robolectric存储在自己的模块中。但是,我无法将支持库添加到robolectric。我怎么能这样做?

这是robolectric模块的gradle文件:

apply plugin: 'java'

// * What went wrong:
// Execution failed for task ':robolectric-tests:test'.
//        > superClassName is empty!
tasks.withType(Test) {
    scanForTestClasses = false
    include "**/*Test.class"
}

dependencies {
    def androidModule = project(':App')
    compile androidModule
    testCompile androidModule.android.applicationVariants.toList().first().javaCompile.classpath
    testCompile androidModule.android.applicationVariants.toList().first().javaCompile.outputs.files
    testCompile files(androidModule.plugins.findPlugin("com.android.application").getBootClasspath())
    testCompile 'junit:junit:4.+'
    testCompile ('org.robolectric:robolectric:2.3') {
        exclude module: 'support-v13'
        exclude module: 'support-v4'
    }

}

这是顶级项目gradle文件。正如您所看到的,我正在引入正确的repo,因为App模块构建没有任何问题。

ext {
    versions = [
        findbugs: '2.0.3',
        checkstyle: '5.7',
        pmd: '5.1.1'
    ]
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.1+'
        classpath group: 'com.autoscout24.gradle', name: 'gradle-monkey-plugin', version: '0.7+'
        classpath 'de.felixschulze.gradle:gradle-hockeyapp-plugin:2.1+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

加成

重读robolectric读取github上的内容时,我注意到他们正在告诉人们将android支持文件移动到他们的本地存储库中。由于我正在使用gradle,因此gradle使用它自己的缓存而不是本地maven(〜。/ gradle vs ./m2),因此可能无法执行任何操作。

引用:

Robolectric requires the Google APIs for Android (specifically, the maps JAR) and Android support-v4 library. To download this onto your development machine use the Android SDK tools and then run the following to install them to your local Maven repository:

mvn install:install-file -DgroupId=com.google.android.maps \
  -DartifactId=maps \
  -Dversion=18_r3 \
  -Dpackaging=jar \
  -Dfile="$ANDROID_HOME/add-ons/addon-google_apis-google-18/libs/maps.jar"

mvn install:install-file -DgroupId=com.android.support \
  -DartifactId=support-v4 \
  -Dversion=19.0.1 \
  -Dpackaging=jar \
  -Dfile="$ANDROID_HOME/extras/android/support/v4/android-support-v4.jar"

1 个答案:

答案 0 :(得分:0)

理论上,您应该能够直接使用android存储库,而不是将这些文件复制到本地maven存储库中:

apply plugin: 'java'

repositories {
    def androidHome = System.getenv("ANDROID_HOME")
    maven {
        url "$androidHome/extras/android/m2repository/"
    }
}

注意,您必须安装Android Support Repository& Google Repository首先通过SDK Manager。