Junit4: expected = Ausnahme funktioniert nicht mit SPRING

8

Ich versuche, die Annotation @Test (expected = RuntimeException.class) in zu verwenden Um eine erwartete Ausnahme zu testen. Mein Code ist wie folgt:

%Vor%

und meine Speichermethode einfach so:

%Vor%

Nach dem Debuggen des Codes habe ich festgestellt, dass der Code die Ausnahme wie erwartet auslöst, aber dass er irgendwo zwischen Spring Framework-Klassen gegessen wird.

Ich habe das gleiche mit altem Weg versucht (Versuch catch Block), aber immer noch bin ich nicht in der Lage, diese Ausnahme im Test zu fangen und Test wirft Fehler in runafter Methode von Junit werfen:

%Vor%

Und ich bin mir sicher, dass dies wegen der RuntimeException ist, die ich einspare, aber nicht in der Lage bin, sie zu fangen oder den Test mit der erwarteten Klausel zu bestehen.

Hat jemand eine Idee, was schief geht?

    
ravinikam 10.07.2009, 06:52
quelle

3 Antworten

4

Hier ist ein Workaround, den ich mit Junit 4.5 gefunden habe - Trennen Sie @Transactional und @ExpectedException in verschachtelte Funktionen. Ich denke, das Problem ist etwas mit dem AOP-Zeug zu tun, das eine @ Transactional-Methode umgeht.

%Vor%     
Brendan Richards 30.11.2009, 11:30
quelle
6

Es stellte sich heraus, dass meine erste Antwort falsch war. Sowohl @Test (erwartet = ...) als auch @ExpectedException funktionieren, aber es gibt eine gewisse Inkompatibilität zwischen Spring TestContext und Junit 4.5 . Die Verwendung von Junit 4.4 hat das Problem für mich gelöst. Endlich.

    
Bertolt 11.09.2009 13:57
quelle
1

Entweder Sie führen einen Komponententest aus, in diesem Fall sollte Spring TX nicht zum Spielen kommen, oder Sie führen einen Integrationstest aus, bei dem Sie testen möchten, was die Speichermethode bei der Laufzeitausnahme ist geschluckt. Ich denke nicht, dass irgendetwas schief läuft, du musst nur sicherstellen, dass du verstehst, was du versuchst zu testen.

    
Paul McKenzie 10.07.2009 07:13
quelle

Tags und Links