我可以在沒有文件系統和網絡訪問的情況下創建junit環境嗎?我想對我們的測試用例執行更嚴格的規則。沒有網絡和文件訪問的JUnit測試沙箱?
理想情況下,這可以使用maven和默認測試階段的工作進行配置。
我可以在沒有文件系統和網絡訪問的情況下創建junit環境嗎?我想對我們的測試用例執行更嚴格的規則。沒有網絡和文件訪問的JUnit測試沙箱?
理想情況下,這可以使用maven和默認測試階段的工作進行配置。
根據這個答案https://stackoverflow.com/a/309427/116509,我想你可以在測試設置上設置一個SecurityManager
,並在拆卸時恢復原來的狀態。
但是,恕我直言,一些單元測試應該允許觸及文件系統,例如,如果被測試的類實際上創建文件作爲其合同的一部分。 (您可以使用依賴注入來確保文件在臨時目錄中創建)。同樣,使用HTTP的類的單元測試應該針對HTTP端點進行測試。否則,你最終會嘲笑一切,你的測試變得毫無價值。我想默認應該是拒絕訪問,然後開發人員需要專門覆蓋這種測試的權限。
在文件系統/網絡訪問中處理這些依賴關係的典型方法是在測試環境中將它們模擬出來。這樣,真正的代碼可以通過正常的渠道,但您的測試不必依靠文件系統或網絡。
研究嘲笑框架,以幫助你做很多事情。啓用這種測試也將使您的代碼更清潔。 :)
我這樣做我的類/接口。我想爲所有的comitters創建一個約束,所以沒有人偶然使用network或unix文件系統作爲依賴。 – Jan
您可以使用Ashcroft禁止從測試中訪問文件系統和其他資源。它使用Java安全管理器來限制對特定資源的訪問。
另一種方法是使用AspectJ並實現幾個禁止調用某些API或包的建議。
這工作(至少從我的junit測試日食)。我目前試圖找出爲什麼它不適用於maven。一旦我成功,我會更新帖子。 – Jan