2015-09-04 34 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

我今天已經回答了類似的問題。看起來像今天是關於促進單個班級責任和依賴注入的日子。

我想你的代碼更改爲下一個第一:

  • 寫一個類將負責開(閉,其他操作,請關注,它應該是簡單的)文件連接
  • 做一個類,從流/文件中的一些內部數據結構中讀取信息
  • 處理這些數據在原始類

接下來我會寫測試:

  • 檢查的文件操作類
  • 檢查讀者傳遞正確的文件位置進行文件操作類的實例(在測試中模擬)
  • 檢查原班正確處理信息由讀取器類(讀者提供嘲笑在測試)

希望它有幫助!