Unittest: Wie fein sind sie zu strukturieren?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Unittest: Wie fein sind sie zu strukturieren?
Da wir in der Hausaufgabe CW04 ja nun etwas mehr Programmlogik entwickeln, werden ja auch Unittests vonnöten sein.

Wie fein sollen wir diese Tests untergliedern?

Tatsächlich kenne ich es so, jedes einzelne Szenario als eigene Testmethode umzusetzen. Das ist freilich sehr aufwendig, aber eine saubere Sache.

Da ich in den bestehenden Tests gesehen habe, dass zum Teil auch mehrere Szenarien derselben funktionalen Methode in eine Testmethode gepackt werden (z. B. GenderTest, TagsTest), meine konkrete Frage:

Wie sollen wir das am besten handhaben? Eher fein (1 Test pro Szenario) oder eher grob (1 Test pro funktionale Methode)? Oder ist es egal, solange die Tests Aussagekraft bzgl. der Codequalität haben?


Gute Frage, es ist natürlich immer ein Trade-Off. Und Meinungen zu beiden Extremen und Dingen dazwischen wirst du viele finden.

Je fein-granularer, desto besser wartbar. Die Namen der Tests können dadurch spezifischer sein und drücken besser aus, was da eigentlich passiert. Die Fehlersuche ist einfacher etc.
Auf der anderen Seite steht natürlich der Overhead. Den kann man manchmal in ein wiederverwendbares Test Setup auslagern. Werden es zu viele, verliert man aber auch leicht wieder den Überblick…

Hängt auch immer davon ab, wie die Funktionalität aussieht.
Hat die Methode viele Parameter? => Potentziell viele Szenarien, die ich testen möchte.

Denke da muss man einfach ein Gefühl bekommen, was für einen selbst gut funktioniert, bzw. mit anderen Code-Autoren diesbezüglich abstimmen, damit es nicht jeder anders macht :wink:
Zwei Aspekte, auf die ich persönlich Wert lege (im Anwendungscode, sowie im Testcode):

  • Eine Test-Methode sollte nicht zu lang bzw. unübersichtlich werden
  • Man sollte gute Überschrift dafür finden können => Indiz für Kohäsion

Auch nach kurzer Recherche zu dem Thema (was jetzt nicht wirklich aussagekräftig ist) habe ich keine wirklich guten Guidelines zu dem Punkt gefunden… Falls jemand dazu etwas findet, wäre cool, wenn ihr es hier teilen könntet :wink: