Einleitung

Exception-Handling ist ein harter Job. PatternTesting-Exception bietet dir Hilfe für diesen harten Job an. Daher bietet diese AspectJ-Bibliothek folgende Unterstützung:

Besseres Exception-Handling:
PatternTesting-Exception kapselt einige gebrächliche Exceptions wie die IOException und ersetzt die Fehlermeldung durch eine etwas aussagekräftigere Fehlermeldung (z.B. bei einer FileNotFoundException bekommt man als zusätzliche Information den Namen der fehlenden Datei mit voller Pfadangabe).
Dafür muss im Code nichts gemacht werden - keine Konfiguration, keine Annotation. Lediglich die patterntesting-exception-Bibliothek muss als AspectJ-Bibliothek eingebunden werden.
Test-Unterstützung für Exception-Handling:
Hast du das Problem, dass du nicht weißt, wie du dein Exception-Handling testen sollst? Nimm einen Mock, der dir die gewünschte Exception provoziert. Zu kompliziert? Willkommen im Club!
Verwende die ExceptionFactory zusammen mit der @TestException-Annotation und die kannst bestimmen, wann die Exception angeflogen kommen soll. Du kannst das Ganze programmatisch oder sogar über JMX kontrollieren. Damit kannst du jetzt dein Programm oder deine Web-Anwendung beobachten, wie sie auf die eine oder andere unerwartete Exception reagiert.

Bessere Exceptions

Aufrufe der folgenden JDK-Klassen werden bzgl. aussagekräftigere Exceptions überwacht:

  • java.io.File (für IOExceptions)
  • java.io.FileInputStream (für FileNotFoundExceptions)
  • java.io.FileOutputStream (für FileNotFoundExceptions)
  • java.io.RandomAccessFile (für FileNotFoundExceptions)
  • java.net.Socket (für ConnectExceptions)

Fehlen einige Klassen (natürlich, oder)? Erzähl es auf der Are some classes missing (yes, of course)? Tell it to the patterntesting-user-Mailing-Liste oder trage einen Feature-Request ein.

Einige Beispiele

Für Beispiele wirf einen Blick in die PatternTesting-Samples:

patterntesting.sample.Bomb
Dies ist eine sehr primitive Bombe, die einen Countdown simuliert. Das Beispiel zeigt, wie man die @TestException-Annotation verwenden kann. Wenn du das Programm startest, kannst du über die jconsole eine InterruptedException via JMX auslösen.