运行单元测试时无法获得任何资源

asc*_*sco 5 android gradle android-studio

Android Studio中存在一个已知错误,即测试类中无法提供应用程序的资源.

根据上述线程的解决方案是将以下行放入build.gradle:

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
Run Code Online (Sandbox Code Playgroud)

但格拉德说:

Error:(132, 0) Could not find property 'processTestResources' on project ':app'.
Run Code Online (Sandbox Code Playgroud)

我到底在哪里放线

processTestResources.dependsOn copyTestResources
Run Code Online (Sandbox Code Playgroud)

在我的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.
Run Code Online (Sandbox Code Playgroud)

apply plugin: 'java'在顶级构建文件中尝试了puttin 然后

task copyTestResources(type: Copy) {
    from "${projectDir}/app/src/test/resources"
    into "${buildDir}/classes/test"
}
Run Code Online (Sandbox Code Playgroud)

请注意,我将modules目录添加到了from-line.这构建很好,但是需要访问资源的单元测试仍然无法正常工作.

Han*_*nno 3

抱歉,我不知道您正在使用该android插件。您收到错误是因为与 Java 插件相比, Android 插件定义了一组不同的构建任务。因此,您需要选择一个不同的构建任务来依赖您的copyTestResources任务,例如:

apply plugin: 'android'

// (...) more build logic

task copyTestResources() {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
check.dependsOn copyTestResources
Run Code Online (Sandbox Code Playgroud)

另外,您的copyTestResources任务可以更简单一些,如下所示:

task copyTestResources() {
    from sourceSets.test.resources
    into sourceSets.test.output.classesDir
}
Run Code Online (Sandbox Code Playgroud)