Gradle Android单元测试依赖于' aar'用于构建工具0.11。+

时间:2014-06-19 20:18:41

标签: android unit-testing gradle robolectric

我正在使用gradle构建系统来运行Roboletric测试但是我遇到了这里描述的问题Gradle Android unit tests that depend on an 'aar'但该解决方案仅适用于构建工具版本0.9。+而不是0.11。+ 因为我找不到爆炸的目录。有什么想法吗?

这是部分构建文件

configurations {
    testLocalCompile {
        extendsFrom compile
    }
}

sourceSets {
    testLocal {
        java.srcDir file('src/test/java')
        resources.srcDir file('src/test/res')
        compileClasspath += configurations.testLocalCompile
        runtimeClasspath += compileClasspath
    }
}

dependencies {
testLocalCompile fileTree(dir: "$project.buildDir/intermediates/exploded-aar", include: "**/classes.jar")

}

task localTest(type: Test, dependsOn: assemble) {
    testClassesDir = sourceSets.testLocal.output.classesDir

    android.sourceSets.main.java.srcDirs.each { dir ->
        def buildDir = dir.getAbsolutePath().split('/')
        buildDir =  (buildDir[0..(buildDir.length - 4)] + ['build', 'intermediates', 'classes', 'debug']).join('/')

        sourceSets.testLocal.compileClasspath += files(buildDir)
        sourceSets.testLocal.runtimeClasspath += files(buildDir)
    }

    classpath = sourceSets.testLocal.runtimeClasspath
}

check.dependsOn localTest

2 个答案:

答案 0 :(得分:4)

0.12.2

再次改变

http://tools.android.com/tech-docs/new-build-system

  

在每个项目中移动解压缩,作为可能的竞争条件的临时修复。

所以你必须改变依赖关系:

unitTestCompile fileTree(dir: "$project.buildDir/intermediates/exploded-aar/", include:"**/classes.jar")

(PS:不知道是否是在stackoverflow中发布此内容的正确方法)

答案 1 :(得分:1)

修正了它:似乎在0.11。+ build工具中,explosion-aar文件夹被移动到root。我不得不改变依赖性:

testLocalCompile fileTree(dir: "${rootDir}/build/exploded-aar", include: "**/classes.jar")