'Программирование по совпадению' Excercise: устройство записи файла Java

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

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

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

Что не так об этом?

5
задан Becuzz 24 July 2015 в 14:45
поделиться

2 ответа

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

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

10
ответ дан 13 December 2019 в 22:04
поделиться

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

.
0
ответ дан 13 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: