Android测试原始资源

jlh*_*ora 36 android robotium android-resources

我在Android Studio中有以下文件夹结构:

??? androidTest
?   ??? java
?   ??? res
?       ??? raw
?           ??? test_file
??? main
    ??? java
    ??? res
        ??? raw
            ??? app_file
Run Code Online (Sandbox Code Playgroud)

我正在尝试访问test_fileandroidTest元素的原始文件夹中存在的资源.这是继承自以下内容的Robotium测试用例中的代码ActivityInstrumentationTestCase2:

InputStream is = this.getInstrumentation()
                 .getContext()
                 .getResources()
                 .openRawResource(R.raw.test_file);
Run Code Online (Sandbox Code Playgroud)

由于无法找到资源,Android Studio会引发参考错误.确切的错误是"无法解析符号test_file".

如何从androidTest资源包中存在的测试用例中引用此资源?

Jac*_*Ras 42

默认情况下,您的androidTest项目将包含您的应用程序的R类,但androidTest的资源将生成一个单独的文件.确保从测试项目中导入R类:

import com.your.package.test.R;

[..]

getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file);
Run Code Online (Sandbox Code Playgroud)

您也可以直接引用测试项目的R类:

getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file);
Run Code Online (Sandbox Code Playgroud)

  • 我有与OP相同的文件结构,但是没有为`androidTest`变体生成`raw`. (5认同)

jos*_*ick 14

我有androidTest正确的位置资源(src/androidTest/res),我仍然无法访问它们<normal.package>.test.R.我花了很多时间谷歌搜索试图弄清楚发生了什么..

我终于找到了答案.如果您正在构建buildType指定的位置applicationIdSuffix,那么您的文件就在<applicationId><applicationIdSuffix>.test.R!!!!

applicationId "com.example.my.app"

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您在正确的目录中有androidTest资源,那么您只能通过com.example.my.app.debug.test.R!!!! 访问它们.