[英]'Programming by Coincidence' Excercise: Java File Writer
我剛剛閱讀了“ 巧合編程 ”一文。 在頁面的末尾有練習。 一些代碼片段是“巧合編程”的案例。 但我無法弄清楚這篇文章中的錯誤:
此代碼來自通用Java跟蹤套件。 該函數將字符串寫入日志文件。 它通過了單元測試,但是當其中一個Web開發人員使用它時失敗。 它依賴什么巧合?
public static void debug(String s) throws IOException {
FileWriter fw = new FileWriter("debug.log", true);
fw.write(s);
fw.flush();
fw.close();
}
這有什么問題?
此代碼依賴於一個名為debug.log
的文件,該文件在應用程序的執行目錄中是可寫的。 很可能Web開發人員的應用程序沒有使用此文件設置,並且該方法在嘗試使用它時失敗。
此代碼的單元測試將起作用,因為原始開發人員在正確的位置(並具有正確的權限)具有正確的文件。 這是允許單元測試成功的巧合。
有趣的花絮。 理想情況下,必須從類路徑中提取資源。 然而,盡管如此,人類的頑固是無止境的。 如果文件存在於測試環境的類路徑(例如eclipse)中,但生產部署中缺少該文件,會發生什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.