2013-08-27 119 views
0

我正在培訓TDD方法,但是我遇到了問題。如何測試IO操作?到目前爲止,我使用的是junit,但是我讀到它不應該用於測試外部源(數據庫,文件...),那麼什麼會更好?對不起,我的英文不好Java,tdd方法,IO操作

回答

1

你不能測試這些外部源的內部工作,但你可以檢查結果。

例如,寫入文件:如果數據相同

開始測試你想在一個變量
寫入數據寫入文件
讀取文件
檢查
存儲數據你存儲在一個
結束測試

測試是有關驗證的最終結果,所以你「失去」了一部分過程並不一定是壞事。通常你可以假設外部資源(庫,IO ..)已經過很好的測試。

1

更改您的API以通過InputStream和/或OutputStream並讓您的jUnit代碼通過ByteArrayInputStream和ByteArrayOutputStream,您可以輕鬆地設置/讀取該代碼。

當然你的生產代碼需要改變,但你通常可以通過簡單的重構實現這一點;離開API原樣但具有公有方法調用重構的方法,例如:

變化

public void read(File file) { 
    // do something with contents of file 
} 

public void read(File file) { 
    read(new FileInputStream(file)); 
} 

// test this method 
public void read(InputStream inputStream) { 
    // do something with contents of inputStream 
} 
+0

1。從測試代碼jar文件加載數據的ByteArrayInputStream或TestClass.getResourceAsStream(「somefile.dat」)。 – Thilo