Ich lese gerade den Artikel Programming by Coincidence. Am Ende der Seite gibt es Übungen. Ein paar Codefragmente, die Fälle von "Programmierung durch Zufall" sind. Aber ich kann nicht den Fehler in diesem Stück herausfinden:'Programmieren durch Zufall' Übung: Java File Writer
Dieser Code stammt aus einer universellen Java-Tracing-Suite. Die Funktion schreibt eine Zeichenfolge in eine Protokolldatei. Es besteht seinen Komponententest, schlägt aber fehl, wenn einer der Webentwickler es verwendet. Welchen Zufall ist es?
public static void debug(String s) throws IOException {
FileWriter fw = new FileWriter("debug.log", true);
fw.write(s);
fw.flush();
fw.close();
}
Was ist das falsch ist?
Ist es nicht der Fall, dass Komponententests keine hundertprozentige Unfehlbarkeit garantieren? Ich meine, es gibt so viele Zufälle, mit denen wir Entwickler konfrontiert sind, seit wir mit der Programmierung begonnen haben. – bragboy
@Bragaadeesh: Dies ist ein schlechter Komponententest, weil er das ["single responsibility principle"] verletzt (http: //en.wikipedia .org/wiki/Single_verantwortung_prinzip). Wenn Sie testen, ob die Methode die Zeichenfolge korrekt protokolliert, sollten Sie die Datei-E/A daraus entfernen. Es sollte einen 'java.io.Writer' erhalten, der von woanders erstellt wurde und dorthin schreibt. –