我的应用程序读取/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 中以进行测试?
最佳答案
我今天已经回答过类似的问题。看起来今天是关于促进单一类责任和依赖注入(inject)的日子。
我会先将您的代码更改为下一个:
- 写一个类,负责打开(关闭,其他操作,注意要简单)文件连接
- 制作一个从流/文件中读取信息到某些内部数据结构的类
- 在您的原始类中处理此数据
接下来我会写测试:
- 检查文件操作类
- 检查读取器是否将正确的文件位置传递给文件操作类实例(模拟测试)
- 检查原始类是否正确处理了阅读器类提供的信息(阅读器在测试中被模拟)
希望对您有所帮助!
关于android - 使用 Robolectric 在外部存储以外的位置读取/写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401447/