'巧合编程'练习:Java文件编写器

5 java file-io

我刚刚阅读了" 巧合编程 "一文.在页面的末尾有练习.一些代码片段是"巧合编程"的案例.但我无法弄清楚这篇文章中的错误:

此代码来自通用Java跟踪套件.该函数将字符串写入日志文件.它通过了单元测试,但是当其中一个Web开发人员使用它时失败.它依赖什么巧合?

  public static void debug(String s) throws IOException {
    FileWriter fw = new FileWriter("debug.log", true);
    fw.write(s);
    fw.flush();
    fw.close();
  }
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

And*_*are 10

此代码依赖于以下事实:debug.log在应用程序的执行目录中存在一个可写的文件.很可能Web开发人员的应用程序没有使用此文件设置,并且该方法在尝试使用它时失败.

此代码的单元测试将起作用,因为原始开发人员在正确的位置(并具有正确的权限)具有正确的文件.这是允许单元测试成功的巧合.