Właśnie przeczytałem artykuł Programming by Coincidence. Na końcu strony znajdują się ćwiczenia. Kilka fragmentów kodu, które są przypadkami "programowania przez przypadek". Ale nie mogę znaleźć błąd w tym kawałku:'Programowanie przez przypadek' Ćwiczenie: Java File Writer
Ten kod pochodzi z uniwersalnego zestawu do śledzenia Java w wersji . Funkcja zapisuje ciąg do pliku dziennika. To przechodzi test jednostki, ale kończy się niepowodzeniem, gdy jeden z programistów WWW go używa. Na co zbieg okoliczności się opiera?
public static void debug(String s) throws IOException {
FileWriter fw = new FileWriter("debug.log", true);
fw.write(s);
fw.flush();
fw.close();
}
Co jest nie tak z tym?
Czy nie jest tak, że testy jednostkowe nie gwarantują 100% odporności na błędy? Mam na myśli, że istnieje wiele takich zbiegów okoliczności, z którymi mamy do czynienia twórców, odkąd zaczęliśmy programować :) – bragboy
@Bagaadeesh: To jest zły test jednostkowy, ponieważ narusza [zasadę jednej odpowiedzialności] (http: //en.wikipedia .org/wiki/Single_responsibility_principle). Jeśli testujesz, czy metoda poprawnie loguje ciąg, powinieneś zabrać z niego plik I/O. Powinien otrzymać "java.io.Writer" utworzony z innego miejsca i napisać do niego. –