Java 在mypackage.R中找不到Android gradle src/androidTest/res/layout/mylayout.xml

Java 在mypackage.R中找不到Android gradle src/androidTest/res/layout/mylayout.xml,java,android,xml,r.java-file,Java,Android,Xml,R.java File,我正在Android Studio中使用gradle编写单元测试。我的测试位于: src/androidTest/java 那很好用。现在,在我的测试中,我希望访问在中定义的资源: src/androidTest/res 具体来说,我想获取src/androidTest/res/layout/mylayout.xml。问题是我的测试包的R类或者任何已经定义了mylayout的包 我是在我的身材上做的。格雷德尔,这没有什么不同: sourceSets { androidTest.resou

我正在Android Studio中使用gradle编写单元测试。我的测试位于:

src/androidTest/java

那很好用。现在,在我的测试中,我希望访问在中定义的资源:

src/androidTest/res

具体来说,我想获取src/androidTest/res/layout/mylayout.xml。问题是我的测试包的R类或者任何已经定义了mylayout的包

我是在我的身材上做的。格雷德尔,这没有什么不同:

sourceSets {
    androidTest.resources.srcDirs = ['src/res']
}

如何向androidTest类提供仅对androidTest可见的资源?

我找到了解决方案,请将其添加到build.gradle文件中

sourceSets {
    androidTest {
        java.srcDirs = ['src/androidTest/src']
        resources.srcDirs = ['src/androidTest/src']
    }
}

对我来说,解决方案是将源文件放在
src/androidTest/java
中,将资源文件放在
src/androidTest/res
中。这些是标准位置,因此您不需要在
gradle.build
中编辑任何内容

另外,将您的R导入重命名为

import com.mycompany.myappname.R;


来源:

为什么只需要测试所需的资源?当您编写网络协议测试时,您需要一组定义的样本数据,这些数据可以正常工作,而样本数据则不能正常工作。将这些资源包括在应用程序中是荒谬的,因为它们除了测试之外没有其他用途。我也不会让这些资源对我有用。目前正在使用'com.android.tools.build:gradle:0.13.+',并安装了gradle 2.1。将路径稍微更改为“src/androidTest/java”和“src/androidTest/res”。从语法上看,它似乎应该可以工作。有趣的是,我可以看到正在为我的测试文件夹中的布局生成中间资源文件(预合并)。有人能让这个工作吗?请?:-)羞耻。我再次遇到同样的错误,这不再有效。这应该是这些文件夹的默认设置,但我发现对于库项目,这些都被忽略了:我对基于应用程序的项目所做的其他测试显示,这些文件夹已被使用…但任何ID都没有添加到R文件中,因此不可用…此外,xml文件不能引用任何主维度或字符串值(它们仅限于androidTest中的值):(有人找到了这个问题的解决方案吗?我正在努力解决这个问题,虽然你不能同时导入测试和常规的“R”类。因为我也想在测试中使用我的应用程序资源id,所以我必须引用测试应用程序的“R”使用完全限定类名的文件,即
int-someId=com.mycompany.myappname.test.R.raw.some\u-raw\u-resource;
@aaronmarino我得到了同样的结果。
import com.mycompany.myappname.test.R;