从AndroidTestProject加载文本文件

时间:2010-10-20 23:16:59

标签: android unit-testing file-io

我有两个项目,我的主要Android应用程序和另一个在该android应用程序之上运行的测试项目。

我在我的android测试项目中放置了一个文本文件,该文件包含信息xml内容。 xml内容是我的Android应用程序在点击服务器时会收到的内容。

我在Android测试项目中使用TestCase类来测试这一点功能。不幸的是,我在将内容加载到我的Android测试项目时遇到了问题。每次我尝试将文件加载到我的Android测试项目时,它都找不到文本文件。我是否正确地说,我可以获得该文件的唯一方法是将其从我的Android测试项目中删除并将其放入我的实际Android项目中,或者我遗漏了一些让我从我的Android测试项目中加载文件的内容。

详细说明: 在我的Android测试项目中,我将文件保存在/ res / raw / testFile下 当我尝试做

File myFile = new File("/res/raw/testFile");

我得到一个java.io.FileNotFoundException:/ res / raw / testFile(没有这样的文件或目录)

由于

3 个答案:

答案 0 :(得分:1)

  

我正在使用TestCase类。

扩展TestCase时无法访问系统资源。 TestCase是jUnit的一部分而不是android。

相反,您可以扩展InstrumentationTestCase。这将允许您访问目标应用程序的上下文getInstrumentation().getTargetContext()和测试应用程序的上下文getInstrumentation().getContext()

然后您可以按如下方式访问原始文件。

Context testContext = getInstrumentation().getContext();
InputStream input = testContext.getResources().openRawResource(R.raw.sample);

如果您需要有关输入流的帮助,请查看this question

答案 1 :(得分:0)

据我所知,一个应用程序的资源不能与另一个应用程序共享,除非您已将其作为内容提供商进行,或者等等。

我的建议是将这个文件写在/sdcard//sample.xml这样的常用位置。

对这两个应用程序的读写权限。

答案 2 :(得分:0)

Android Gradle Plugin版本1.1开始,您不必使用Instrumentation来加载文件资源。

我写了here如何使用POJO unit test案例。