Wie testet man eine Methode, die eine bestimmte Datei liest

8

Ich weiß, das ist ein bisschen naiv. Wie testet man dieses Stück Code, ohne eine physische Datei als Eingabe zu geben? Ich bin neu in Mockito und Unit Testing. Also ich bin mir nicht sicher. Bitte helfen.

%Vor%     
user2990315 20.12.2013, 21:07
quelle

3 Antworten

6

Sie sollten Ihre Methode wahrscheinlich umgestalten. Wie Sie festgestellt haben, ist eine Methode, die eine Datei als Eingabe verwendet, nicht einfach testbar. Außerdem scheint es statisch zu sein, was die Testbarkeit nicht erleichtert. Wenn Sie Ihre Methode wie folgt umschreiben:

%Vor%

es wird viel einfacher zu testen sein. Sie trennen Ihre Geschäftslogik von den technischen Details beim Lesen einer Datei. Wie ich es verstehe, liest Ihre Geschäftslogik einen Stream und stellt sicher, dass die Zeilenenden Unix-Stil sind.

Wenn Sie das tun, wird Ihre Methode testbar sein. Sie machen es auch generischer: es kann jetzt von einer Datei, von einer URL oder von einem beliebigen Stream lesen. Besserer Code, einfacher zu testen ...

    
Guillaume 20.12.2013, 21:43
quelle
14

Sie können eine Datei als Teil des Tests erstellen, ohne sie auszuplauseln.

JUnit verfügt über eine nette Funktion zum Erstellen von Dateien, die zum Testen verwendet werden, und zum automatischen Bereinigen mit der TemporaryFolder -Regel.

%Vor%     
Jeff Storey 20.12.2013 21:19
quelle
3

Warum willst du eine Datei vortäuschen? Mocking java.io.File ist eine schlechte Idee, da es viele native Sachen hat. Ich würde Ihnen empfehlen, sicherzustellen, dass eine minimalistische Textdatei im Klassenpfad verfügbar ist, wenn die Komponententests ausgeführt werden. Sie können diese Datei in Text konvertieren und die Ausgabe bestätigen.

    
Amit Sharma 20.12.2013 21:16
quelle