Ich versuche zu testen, dass eine bestimmte Methode eine erwartete Ausnahme von einer Methode auslöst. Laut JUnit4-Dokumentation und diese Antwort < Ich habe den Test geschrieben als:
%Vor%Dieser Code schlägt jedoch den JUnit-Test fehl und meldet die ausgelöste (und erwartete) Ausnahme als Fehler.
Die Methode, die ich teste, hat nur das im Körper:
%Vor%Außerdem besteht der folgende Test:
%Vor%Das bedeutet, dass die erwartete Ausnahme tatsächlich ausgelöst wird.
Ich plane tatsächlich, die Methode zu ändern, um tatsächlich etwas zu tun, anstatt nur die Ausnahme zu werfen, aber es hat mich neugierig gemacht, was das Problem verursacht hat, damit es in Zukunft nicht wieder passieren könnte.
Folgende Überprüfungen wurden durchgeführt:
Ich benutze JUnit 4.1, und im selben Test verwende ich Mockito.
Was könnte den fehlerhaften Fehler verursachen?
Ich habe das Problem gefunden.
Der TestRunner, den ich benutzte, war der richtige (JUnit 4), aber ich erklärte meine Testklasse als:
%Vor% Ich nehme an, dass der Testläufer ihn als JUnit 3-Test behandelt. Ich habe extends TestCase
entfernt und die erwarteten Ergebnisse erhalten.
Ihr Testcode sieht für mich ok aus.
Stelle sicher, dass du mit einem junit 4 testrunner, nicht mit einem junit 3.8 testrunner fährst - das könnte hier der Übeltäter sein (versuche es von der Kommandozeile aus oder überprüfe einfach die Kommandozeile beim Ausführen deines Tests). Der Klassenpfad Ihres Testrouns stimmt möglicherweise nicht mit Ihrem Projektklassenpfad überein
Dies ist besonders in IDEs der Fall. Alternativ könntest du auch versuchen, zu junit 4.4 zu gehen und zu sehen, ob das dein Problem löst. (Junit 4.5 kann andere Probleme verursachen.)
Neugierig.
Ich habe drei Klassen geschrieben:
Ein UndoCommand:
%Vor%Eine CannotUndoException:
%Vor%Und eine JUnit 4.4-Testklasse:
%Vor%Funktioniert einwandfrei - alle Tests bestehen, "grünes" Ergebnis.
Wenn ich die (erwartete = ...) aus der Annotation entferne, schlägt der Test wie erwartet fehl.
Ich verwende Sun JDK 6, JUnit 4.4 und IntelliJ 7.0.5.
Wie unterscheiden sich deine?
Tags und Links java unit-testing exception junit4