Android Studio中有一个known bug,其中应用程序的资源不在测试类中。
根据上述线程的解决方案是将以下行放入build.gradle:
task copyTestResources(type: Copy) {
from "${projectDir}/src/test/resources"
into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
但格拉德说:
Error:(132, 0) Could not find property 'processTestResources' on project ':app'.
我到底要把这行放在哪里
processTestResources.dependsOn copyTestResources
在我的build.gradle中?
编辑:
我的构建文件中还没有apply plugin: 'java'
。问题是在我的app模块的构建gradle中,我已经有apply plugin: 'android'
并试图添加java插件导致
Error:The 'java' plugin has been applied, but it is not compatible with the Android plugins.
我在顶级构建文件中尝试了puttin apply plugin: 'java'
,然后
task copyTestResources(type: Copy) {
from "${projectDir}/app/src/test/resources"
into "${buildDir}/classes/test"
}
请注意,我将modules目录添加到了from-line。这构建很好,但是需要访问资源的单元测试仍然无法正常工作。
答案 0 :(得分:3)
我不知道您使用的是android
插件,抱歉。您收到错误是因为Android插件defines a different set of build tasks与Java插件相比。因此,您需要选择不同的构建任务来依赖copyTestResources
任务,例如:
apply plugin: 'android'
// (...) more build logic
task copyTestResources() {
from "${projectDir}/src/test/resources"
into "${buildDir}/classes/test"
}
check.dependsOn copyTestResources
此外,您的copyTestResources
任务可能会更简单:
task copyTestResources() {
from sourceSets.test.resources
into sourceSets.test.output.classesDir
}
答案 1 :(得分:0)
有一个很好的解决方法来实现这个: https://github.com/nenick/AndroidStudioAndRobolectric/blob/master/app/build.workaround-missing-resource.gradle
有了这个,您可以放弃额外的任务,只需添加" .gradle"我链接的文件并将其应用于您的模块 build.gradle 。
apply from: 'build.workaround-missing-resource.gradle'
确保将您的资源放入 app / test / resources / ,并仅通过其姓名引用它们。
例如:this.getClass().getClassLoader().getResource("my-asset-file.json")
我在您链接的票证中找到了解决方案: https://code.google.com/p/android/issues/detail?id=64887