Ich mache Unit-Tests.
Ich versuche eine Funktion zu testen.
Ich rufe es von meiner Testkomponente aus auf. Aber wenn die Remote-Funktion die Ausnahme nicht verarbeiten kann, wird auch meine Testerkomponente eine Ausnahme erhalten, denke ich.
Muss ich mir also Sorgen machen, dass meine Testerkomponente Ausnahmen enthält?
Vielen Dank.
BEARBEITEN:
PS:
Einen Fehler auszulösen ist gut, aber nur für andere Funktionen, nicht für Endbenutzer, bis es eine letzte Option ist!
OMG Ich habe ein Programmierungszitat geschrieben !!
testing
unit-testing
exceptions
Vikas
quelle
quelle
Antworten:
Kurze Antwort: NEIN.
Fange keine Ausnahmen in Unit-Tests. Sie führen Unit-Tests durch, um Fehler und Situationen zu ermitteln, in denen Ausnahmen auftreten.
Das Unit-Test-Framework sollte Ausnahmen auf vernünftige Weise behandeln. Die meisten (wenn nicht alle) xUnit-Frameworks verfügen über ein Konstrukt, das bestimmte Ausnahmen erwartet , die Sie verwenden, wenn Sie eine bestimmte Ausnahmebedingung im zu testenden System auslösen möchten, und über einen Testdurchlauf, wenn die erwartete Ausnahme ausgelöst wird, aber fehlschlägt, wenn dies nicht der Fall ist.
quelle
(Im Gegensatz zur Antwort von mcottle) Lange Antwort: NEIN ... die meiste Zeit
Wenn Sie sagen, dass Sie von einem Test erwarten, dass er eine bestimmte Ausnahme auslöst, wissen Sie, wann JEDE Zeile in diesem Test diese bestimmte Ausnahme auslöst.
Das ist nicht ganz dasselbe wie zu wissen, dass die getestete Methode die Ausnahme auslöst.
Wenn Ihr Test das Einrichten eines Objekts oder Kontexts umfasst (innerhalb des Tests, nicht innerhalb der Framework-Version von
SetUp
), ist es möglicherweise besser, die einzelne Zeile, die Sie tatsächlich testen möchten, mit einem Try / Catch-Befehl, möglicherweise mit einem Helfer, zu umschließen.Zum Beispiel,
und dann
Wenn dieser Test fehlschlägt, weiß ich, dass meine getestete Methode die Ausnahme ausgelöst hat und nicht irgendetwas im zufälligen Setup-Zeug.
(Sie sollten versuchen, zufällige Setup-Aufgaben zu vermeiden. Manchmal ist es einfacher, Setup-Code im Test zu haben.)
quelle
Im Allgemeinen sollten Sie nur die Ausnahme auslassen, und das Test-Framework gibt Ihnen einen schönen Bericht mit allen benötigten Informationen.
Es wird jedoch erwartet, dass wir in der TDD-Methodik die folgenden Schritte ausführen:
Wenn Sie eine Ausnahme auslassen und der Fehler klar ist, ist dies in Ordnung. Aber manchmal ist die Ausnahme dunkel oder sogar irreführend. Wie können Sie das in Ihrem Code belassen (für Sie später, wenn Sie es vergessen haben, oder für ein Teammitglied, das viel Zeit verlieren wird, um das Problem herauszufinden)? Daher lautet meine Richtlinie: " Wenn es erforderlich ist, einen Fehler zu beheben, müssen Sie die Ausnahme abfangen ".
quelle