使用Robolectric在除外部存储之外的位置读/写文件

时间:2015-09-04 15:17:47

标签: android junit robolectric

我的应用程序读取/ proc中的文件。我试图用Robolectric 2.3来测试它。

我可以在“外部存储”中创建一个没有问题的测试文件:

ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED);
PrintWriter out;
out = new PrintWriter("myFile");
out.println(contents);

但是,如果我尝试写入/proc中的文件,则会导致java.io.FileNotFoundException: \proc\net\netstat (Access is denied)爆炸。

ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED);
boolean a = new File( "/proc" ).mkdirs();  //Fails
PrintWriter out;
out = new PrintWriter("/proc/myFile");
out.println(contents);

有什么办法可以让(特定)文件存在/ proc中进行测试?

1 个答案:

答案 0 :(得分:1)

我今天已经回答了类似的问题。今天看起来像是关于促进单一阶级责任和依赖性注射的日子。

我会将您的代码更改为下一个:

  • 写一个负责打开(关闭,其他操作,注意它应该简单)文件连接的类
  • 创建一个从流/文件读取信息到某个内部数据结构的类
  • 在原始课程中处理此数据

接下来我会写测试:

  • 检查文件操作类
  • 检查读者是否将正确的文件位置传递给文件操作类实例(在测试中模拟)
  • 检查原始类是否正确处理读者类提供的信息(读者在测试中被模拟)

希望它有所帮助!