我正在編寫一個程序,用於在文件系統中創建和編輯目錄和文件。如何在Java中測試文件系統操作
我想寫一個測試,不喜歡的東西
(1)檢查給定的目錄存在
(2)創建現有目錄中的目錄。
什麼是測試這種功能的最佳方法?
有沒有辦法僞造一個文件系統(例如在內存中?),還是隻需要使用一個創建/檢查真實目錄的臨時輸出目錄?
我正在編寫一個程序,用於在文件系統中創建和編輯目錄和文件。如何在Java中測試文件系統操作
我想寫一個測試,不喜歡的東西
(1)檢查給定的目錄存在
(2)創建現有目錄中的目錄。
什麼是測試這種功能的最佳方法?
有沒有辦法僞造一個文件系統(例如在內存中?),還是隻需要使用一個創建/檢查真實目錄的臨時輸出目錄?
您可以爲文件系統交互編寫包裝函數,並且爲了測試目的,將這些函數替換爲實際上不接觸文件系統的函數(但它們會跟蹤打開哪些內容以及哪些測試可以驗證)。
如果你是單元測試,你可以寫你的類,以便它接受一個File對象。如果你的測試通過了,那麼你可以假設你的班級在你將它連接到一個實際使用它的班級時會工作。
這也可以讓你測試其他人提到的真正的臨時展位。
如果你在談論單元測試(例如JUnit),我會確保你可以傳遞一個路徑給你的可測試代碼(依賴注入)。然後我將以跨平臺的方式獲取操作系統的臨時文件夾,即使用System.getProperty("java.io.tmpdir");
。然後執行代碼,使用臨時文件夾作爲父文件寫入文件/目錄,對文件/目錄進行斷言,並且作爲最佳實踐,清理單元測試的tearDown()方法中的臨時文件夾。
對於#1,爲什麼不使用新文件(「dir」)。isDirectory()? – 2009-09-03 01:00:07
如果你想編程爲跨平臺,你最好創建和檢查真實的目錄。 Windows方式和UNIX方式(包括OS X和Linux)之間的文件系統操作方式有很多不同之處,因此您需要確保它們已經過正確測試。 – jwaddell 2009-09-03 01:01:54