Упражнение «Программирование по совпадению»: Java File Writer - PullRequest
5 голосов
/ 09 апреля 2010

Я только что прочитал статью Программирование по совпадению . В конце страницы есть упражнения. Несколько фрагментов кода, которые являются случаями «программирования по совпадению». Но я не могу понять ошибку в этой части:

Этот код взят из общего назначения Пакет трассировки Java. Функция записывает строку в файл журнала Это проходит свой модульный тест, но не проходит, когда один из веб-разработчиков использует его. На какое совпадение он опирается?

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

Что в этом плохого?

Ответы [ 2 ]

10 голосов
/ 09 апреля 2010

Этот код основан на том факте, что существует файл с именем debug.log, который доступен для записи в каталоге выполнения приложения. Скорее всего, приложение веб-разработчика не настроено с этим файлом, и метод не работает, когда он пытается его использовать.

Будет работать модульное тестирование этого кода, поскольку у исходного разработчика был нужный файл в нужном месте (и с правильными разрешениями). Это совпадение позволило модульному тесту пройти успешно.

0 голосов
/ 09 апреля 2010

Интересный лакомый кусочек. В идеале ресурсы должны быть извлечены из пути к классам. Тем не менее, нет конца человеческому терпению, хотя. Что произойдет, если файл присутствует в classpath тестовой среды (скажем, eclipse), но отсутствует в рабочих развертываниях .?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...