2015-09-04 35 views
1

我的应用程序读取/ proc中的文件。我试图用Robolectric 2.3来测试。然而使用Robolectric读取/写入除外部存储以外的位置文件

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

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

我想你的代码更改为下一个第一:

  • 写一个类将负责开(闭,其他操作,请关注,它应该是简单的)文件连接
  • 做一个类,从流/文件中的一些内部数据结构中读取信息
  • 处理这些数据在原始类

接下来我会写测试:

  • 检查的文件操作类
  • 检查读者传递正确的文件位置进行文件操作类的实例(在测试中模拟)
  • 检查原班正确处理信息由读取器类(读者提供嘲笑在测试)

希望它有帮助!