Ich habe eine Klasse, die die Ergebnisse einer wissenschaftlichen Messung zusammenfasst. Ich baue von Anfang an Unit-Tests ein, habe aber nicht viel Erfahrung mit Unit-Tests und bin mir nicht sicher, welche Verhaltensweisen ich wie testen soll.
Meine Klasse macht drei Arten von Dingen:
- Liest Messdaten aus einer Datei (oder einer Zeichenfolge) in ihre Instanzvariablen
- Schreibt seine Messdaten in eine Datei oder einen String
- Führt Berechnungen für seine Daten durch (z. B. Ermitteln des Durchschnitts einer Reihe von Zahlen)
Mein aktueller Ansatz ist es, eine bekanntermaßen gute Beispieldatendatei in mein test
Verzeichnis aufzunehmen. Ein Test liest die Daten aus der Datei ein, übergibt sie an meine Klasse und stellt sicher, dass sie einige grundlegende Sicherheitsüberprüfungen erfüllen. Ein weiterer Test übergibt die Dateidateinamen in meine Klasse, lässt die Klasse lesen, und führt die gleichen Tests. Der Rest der Tests liest die Daten aus der Datei ein, übergibt sie an meine Klasse und überprüft, ob die Ergebnisse der Datenverarbeitungsmethoden korrekt sind, sofern ich über diesen Datensatz Bescheid weiß.
Dies scheint jedoch ziemlich verwirrt zu sein. Die Tests, die (3) überprüfen, setzen implizit voraus, dass das Verhalten von (1) korrekt ist, da die Funktionen in (1) verwendet werden, um die Klasse überhaupt erst zu füllen. Und die Tests von (1) könnten von den umfangreichen Überprüfungen profitieren, die durch die Tests für (3) durchgeführt wurden. Strukturiere ich meine Unit-Tests schlecht oder ist dies nur ein natürliches Ergebnis der Tatsache, dass ich für meine Tests einen bestimmten Datensatz verwenden muss?