Verwenden Sie einen junit4 Test Runner? Die @Test-Annotation funktioniert nicht, wenn Sie einen Junit3-Test-Runner ausführen. Überprüfen Sie die Version, die Sie verwenden.
Zweitens ist die empfohlene Methode, nach Ausnahmen in Ihrem Code zu suchen, die Verwendung einer Regel (eingeführt in Junit 4.7).
%Vor%Sie können weiterhin @Test (expected = IOException.class) verwenden, aber das oben genannte hat den Vorteil, dass der Test fehlschlägt, wenn eine Ausnahme ausgelöst wird, bevor die Ausnahme.expect aufgerufen wird.
Ich habe etwas mit hopias Antwort mit ein paar Verbesserungen sehr ähnlich gemacht. Ich habe es das Exception-Objekt zurückgeben lassen, so dass Sie seine Nachricht oder andere Eigenschaften überprüfen können, und ich habe eine Testable
-Schnittstelle deklariert, um Runnable
zu ersetzen, weil Runnable
den geprüften Code nicht zu überprüften Exceptions wirft.
Hier ist ein Beispiel für den Aufruf.
%Vor%So mache ich es. Ich erstelle eine statische Methode namens assertThrowsException, die als Argumente eine erwartete Ausnahmeklasse und eine Runnable, die den zu testenden Code enthält, als Argumente verwendet.
%Vor%Dies ist der Beispielcode, um den speziellen Assert in Ihrer Testklasse zu verwenden (der AndroidTestCase oder eines seiner Derivate erweitert):
%Vor%Ja, es gibt eine Menge Arbeit, aber es ist besser, als junit4 auf Android zu portieren.