Ich habe eine Methode, die aus einer TXT-Datei lesen und eine Liste mit Wörtern füllen, die in der Datei vorhanden sind. Die Methode berechnet und gibt Most Repeated Word zurück. Wenn ich eine jUnit dafür schreiben möchte. Wie sollte ich die Corectess dieser Methode testen, da die Datei sich häufig ändert?jUnit für Dateileser
Antwort
Wie @jaibalaji schrieb, sollten JuintTests nicht von Ressourcen außerhalb des JVM-Speichers abhängig sein.
Also der erste Schritt muss sein, Ihre Code im Test (Schnitt) unabhängig von der eigentlichen Datei.
Ich habe eine Methode, die aus einer TXT-Datei lesen und eine Liste mit Wörtern füllen, die in der Datei vorhanden sind. Die Methode berechnet und gibt Most Repeated Word zurück.
In dieser Sätze erwähnen Sie 3 Aufgaben:
- eine Datei
- bevölkern eine Liste
- Wort
wiederholten Lektüre sollten Sie diese Methode aufgespalten, so dass Sie mit kleineren Klassen mit jeweils nur einer Verantwortung.
Klasse TextAnalyser { private final WordListBulder wordListBulder; // konvertiert String in eine Liste von Wörtern private final WordCountAnalyser wordCountAnalyser; öffentlicher TextAnalyser (WordListBulder wordListBulder, WordCountAnalyser wordCountAnalyser) { this.wordListBulder = wordListBulder; this.wordCountAnalyser = wordCountAnalyser; }
public String findMostRepeatedWordIn(MyFileReader myFileReader){
String fileContent = myFileReader.readContent();
List<String> wordList = wordListBulder.crerateWordListFrom(fileContent);
return wordCountAnalyser.findMostRepeatedWordIn(wordList);
}
Dieser Code ist zu einfach zum Scheitern verurteilt und müssen nicht UnitTested sein. Modul- und/oder Acceptance-Tests wird zeigen, dass dies funktioniert.
Jetzt ist das Verhalten zu testen in der Klasse WordCountAnalyser
. Und es hat eine einfache "falsche" Eingabe, die zu einer deterministischen testbaren Ausgabe führt.
Die Datei sollte ein Parameter der Methode oder ein Instanzfeld der Klasse dieser Methode sein.
Auf diese Weise können Sie die Methode testen, indem Sie eine Datei zur Verfügung stellen, mit der Sie die Daten verwalten und wissen, wie Sie sie anwenden.
Zum Beispiel mit dem Parameter Art und Weise:
public String findMostRepeatedWork(File file){
...
}
Und so kann man Einheit es leicht:
@Test
public void findMostRepeatedWork(){
// fixture
File myTestFile = ...;
// action
new MyClassToTest.findMostRepeatedWork(myTestFile);
// assertion
...
}
Es sollte einen Schritt weiter sein: Die 'BufferedReader' oder' InputStream' sollte sein die Klassen * Abhängigkeit *, so dass wir ** Mocks ** dieser Schnittstellen erstellen können und Dateisystem nicht berühren müssen ... –
Ich habe die Methode geschrieben, die mostRepeatedWord zurückgibt. Woher weiß ich, dass ich es richtig geschrieben habe? –
@MaorShitrit Sie nicht, es sei denn, Sie schrieben den UnitTest für jedes erwartete Verhalten * vor * den tatsächlichen Code (TDD) –
Junit ist nicht für jeden Test gedacht, die Ressourcen (Datei, dB nimmt oder Netzwerk)
- 1. Während Schleifenproblem für einen Dateileser?
- 2. Dateileser Javascript
- 3. Fehler bei Dateileser
- 4. JUnit für Datenbank-Code
- 5. JUnit-Testfälle für Config
- 6. JUnit Tests für AspectJ
- 7. Junit für ArrayList
- 8. Junit-Testfall für Entitätsmanager
- 9. JUnit-Test für System.out.println()
- 10. Wie für JUnit
- 11. Junit für Stax Parser
- 12. Objects.equals für jUnit test
- 13. Junit Testing für GUI
- 14. LDAP für JUnit umgehen
- 15. Ist num_epochs im csv-Dateileser string_input_producer() des Tensorflusses begrenzt?
- 16. junit testfall für frühling MVC
- 17. Junit-Test - assertEquals für Ausnahme
- 18. Junit - Mock für HttpClient Ausführen
- 19. JUnit Test für Android App
- 20. Erzeuge Daten für Junit automatisch
- 21. JUNIT Testfall für void-Methode
- 22. JUnit 5 für Android-Test
- 23. Junit für Bean Definition Klasse
- 24. Junit-Test für Datenbank-Verbindung
- 25. Wie für java.lang.AssertionError (JUnit 5)
- 26. Junit Testfall für PreparedStatementCallback Abdeckung
- 27. JUnit Testfälle für benutzerdefinierte Methode
- 28. JUnit-Testfall für meine api
- 29. Junit-Testfall für Wrapper-Klasse
- 30. JUnit-Test für assertEqual NullPointerException
Um zu testen, wissen Sie vielleicht die Anzahl des Auftretens der am häufigsten wiederholten Wort, wenn nicht können Sie nicht, also wenn die Datei ändern ist es schwierig ^^ – azro