How to unit-test-eine Methode, die liest eine angegebene Datei
Ich weiß das ist ein bisschen naiv. Wie unit-Tests, dieses Stück code ohne physische Datei als input.
Ich bin neu mockito und unit-Tests. Also bin ich nicht sicher. Bitte helfen Sie.
public static String fileToString(File file) throws IOException
{
BufferedReader br = new BufferedReader(new FileReader(file));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
}
return sb.toString();
} finally {
br.close();
}
}
- Look at stackoverflow.com/questions/17681708/...
- In den verlinkten Beispielen akzeptierte Antwort, die ich glaube, er ist unter einer physischen Datei, um den code zu testen. Ich möchte, um zu testen, dass ohne eine Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte man wohl umgestalten Methode. Als man erkannte, eine Methode, wobei eine Datei als Eingabe ist nicht leicht überprüfbar. Auch, es scheint statisch zu sein, die Hilfe nicht die Testbarkeit. Wenn Sie schreiben Sie Ihre Methode so :
wird es viel einfacher zu testen. Trennen Sie Ihre business-Logik bilden die technischen Einzelheiten einer Datei zu Lesen. Wie ich es verstehe, Ihre business-Logik-Lesen von Strom und Sicherstellung der Zeilenenden auf unix-Stil.
Wenn Sie das tun, Ihre Methode getestet werden. Sie machen es auch mehr generisch : es können jetzt Lesen aus einer Datei, von einer URL oder von jeder Art von stream. Besseren code, einfacher zu testen ...
Können Sie eine Datei erstellen, die als Teil der Prüfung, keine Notwendigkeit, verspotten Sie es aus.
JUnit hat eine nette Funktionalität für die Erstellung von Dateien für die Tests verwendet und automatisch die Reinigung mit der
TemporaryFolder
Regel.Warum willst du simulieren Sie eine Datei? Mocking
java.io.File
ist eine schlechte Idee, weil es hat viele einheimische Sachen. Ich würde empfehlen, dass Sie sicherstellen, dass ein minimalistisches text-Datei steht im classpath, wenn die unit-tests ausgeführt werden. Sie können konvertieren Sie diese Datei, um text und bestätigen Sie die Ausgabe.könnten Sie die Kombination von ByteArrayInputStream und BufferedReader-Klasse, um Ihre gewünschte Datei in Ihrem code. So würde es keine Notwendigkeit zu schaffen, eine echte Datei auf Ihrem system. Was würde passieren, wenn Sie haben nicht genug Berechtigung --auf der Grundlage von einigen bestimmten Umständen-um eine Datei zu erstellen. Auf den folgenden code, erstellen Sie Ihre eigenen wünschenswert Inhalt der Datei: