我正在使用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
答案 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")