Tia*_*oso 0 android android-instrumentation
我有一个安卓应用。我想编写仪器测试。
我想将一些特定文件放在res/raw测试 apk的文件夹中。
我将它们放在androidTest/src/res/raw文件夹中,并在代码中使用R.raw.file. 但是,该应用程序引用了一些其他资源文件,该文件在我的main源集中。
如何确保我的测试 apk 从其自己的res/raw文件夹中获取正确的文件?
你的路径是错误的。你想要的路径是src/androidTest/res/raw.
此目录中的文件将替换src/main/res/raw.
此目录中的新文件需要由测试包中的 R 类访问,而不是应用程序的 R 文件。
- 更新
如果问题是 Android Studio 告诉您测试包中不存在 R 类,那么这是由于 Android Studio 在您尝试运行单元测试之前未构建测试 R 类造成的。通过忽略屏幕上的错误并尝试运行测试来解决此问题。将生成 R 类并运行测试(假设没有其他错误)。
如果问题是读取文件产生了错误的内容,那么您是从错误的上下文中读取文件。您需要使用来自 Instrumentation 的 getContext。
public class ResourceLoadTest extends InstrumentationTestCase {
public void testLoadResource() throws IOException {
InputStream inputStream = getInstrumentation().getContext().getResources().openRawResource(com.example.app.test.R.raw.hello);
try {
Scanner scanner = new Scanner(inputStream, "UTF-8");
assertEquals("hello", scanner.nextLine());
} finally {
inputStream.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |