Checkliste für Test-Reviews

Review zu allgemeinen Tests

  • Der Test sollte keine Logik und auch keine dynamischen Variablen enthalten
  • Der Test sollte nur eine Sache testen
  • Unit Tests sollten von den Integration Tests getrennt sein
  • Überprüfen Sie die Code-Abdeckung, indem Sie mit den Werten herumspielen
  • Das Testen privater und geschützter Methoden sollte nicht die Norm sein (öffentlich ist immer besser)
  • Es sollte wenige oder keine Code-Duplizitäten in den Tests geben
  • Setup- Abbruchmethoden sollten nicht missbraucht werden
  • Tests sollten komplett isoliert und wiederholbar sein
  • Die meisten Tests sollten nur ein Assert beinhalten
  • Tests sollten nicht überspezifiziert sein
  • Überprüfen Sie, dass eine gute Namenskonvention eingehalten wird
  • Verwenden Sie nur aussagekräftige Assert-Nachrichten
  • Trennen Sie die Asserts von den Aktionen

Review zu Mocks und Stubs

  • Ziehen Sie das zustandsbasierte Testen dem Interaction Testing vor
  • Verwenden Sie strikte Mocks so selten wie möglich
  • Es sollte nur einnen Mock pro Test geben
  • Ein Test sollte Verify und Assert nur für einen Mock und nicht für alle Fake-Objekte im Test aufrufen (oder er testet wahrscheinlich mehr als eine Sache)
  • Nur in seltenen Fällen sollte ein Stub gleichzeitig auch ein Mock im gleichen Test sein

Da die Begriffe Stub und Mock nicht immer einheitlich verwendet werden, wird hier die folgende Definition verwenden.

Stub
Ein Stub ersetzt eine Abhängigkeit beim Test. Häufig wird hier eine Interface so implementiert, das die Methoden die Werte zurückliefen, die von der zu testenden Klasse erwarten. Ein Stub enthält im Vergleich zur richtigen Implementierung keine oder nur sehr wenig Logik. Ein Stub enthält selber keine Assert-Aufrufe. Kurz: Ein Stub ermöglicht den Test ohne ihn fehlschlagen zu lassen.
Mock
Ein Mock verhält sich prinzipiell wie ein Stub, enthält aber zusätzliche Testlogik. Ein Mock soll die Interaktion der zu testenden Klasse mit einer Abhängigkeit prüfen. Ein Mock zeichnet während des Tests Informationen (z. B. Methodenaufrufe) auf und prüft ob diese die Testkriterien erfüllen. Ein Mock enthält Assert-Aufrufe, der eigentliche Test sollte dafür keine. Kurz: Ein Mock prüft die Interaktion mit einer Abhängigkeit und kann einen Test deswegen fehlschlagen lassen.
Fake
Fake wird als Oberbegriff für Stubs und Mocks verwendet.

Quelle: The Art of Unit Testing, Roy Osherove, mitp, 2010

Zurück