Kann ich mehrere ausgelöste Ausnahmen in einer Testmethode testen?

9

Ich habe eine gut spezifizierte Schnittstelle und dagegen schreibe ich meine JUnit-Tests:

%Vor%

Wie Sie sehen können, kann die Implementierung verschiedene Ausnahmen auslösen, für die ich Tests schreiben muss. Mein aktueller Ansatz besteht darin, eine Testmethode für eine mögliche Ausnahme zu schreiben, die in der Schnittstelle wie folgt angegeben ist:

%Vor%

Für jetzt muss ich eine Menge von Testmethoden für diese eine Methode definieren, die in der Schnittstelle definiert wird und die sich unangenehm anfühlt. Kann ich alle diese Ausnahmetests in einer Testmethode kombinieren oder was ist die beste Vorgehensweise?

    
chillyistkult 16.12.2013, 03:37
quelle

2 Antworten

4

Leider erlaubt die Annotation @Test nicht das Erfassen mehrerer Ausnahmearten (api-Referenz Ссылка ).

Als erste Option würde ich vorschlagen, zu TestNG zu wechseln. Wenn Ihr Team das nicht erlaubt, können Sie in JUnit nur wenige Dinge tun.

Verwenden Sie parametrisierte Testfälle, damit Sie nicht pro Testfall eine Testfunktion schreiben müssen ( Ссылка ). Von hier aus gibt es ein paar Optionen.

  1. Gruppieren Sie Ihre Testdaten nach Ausnahmetypen.

    %Vor%
  2. Kombinieren Sie die Ausnahmetypen in Ihrer Methodensignatur. (Dies ist, was ich empfehlen) Grobe Gliederung unter ...

    %Vor%
  3. Setzen Sie all Ihre Tests unter die Ausnahmeklasse (ich habe das Gefühl, dass Sie das nicht wollen.).

    %Vor%
user2910265 16.12.2013, 04:14
quelle
0

Es ist vielleicht nicht die beste Idee, sie alle in einer Methode zu kombinieren, da Sie nicht wirklich wissen würden, welcher Testfall welche Ausnahme ausgelöst hat.

Zum Beispiel, wenn Sie die Zeile

hatten %Vor%

was eine NullPointerException ausgeben sollte, aber stattdessen eine IllegalArgumentException , das soll nicht als Erfolg gewertet werden.

Wenn Sie alle Ausnahmen dieser Methode in einem Testfall testen möchten, wäre es eine gute Alternative, jeden Ausnahmetest in einen try..catch-Block zu verpacken.

Sie könnten beispielsweise

haben %Vor%     
peter 16.12.2013 03:56
quelle