Sie können dies mit AspectJ tun. Sie deklarieren einen Joinpoint (in diesem Fall Aufruf der Methode foo) und "mildern" Sie die Ausnahme.
bearbeiten Um ein wenig näher darauf eingehen:
Sagen Sie bitte die folgende Klasse Bar
haben:
public class Bar {
public void foo() throws Exception {
}
}
... und Sie haben ein Test wie folgt aus:
import junit.framework.TestCase;
public class BarTest extends TestCase {
public void testTestFoo() {
new Bar().foo();
}
}
Dann wird natürlich der Test nicht kompilieren. Es wird einen Fehler geben:
Unhandled exception type Exception BarTest.java(line 6)
Nun ist diesen mit AspectJ zu überwinden, schreiben Sie einen sehr einfachen Aspekt:
public aspect SoftenExceptionsInTestCode {
pointcut inTestCode() : execution(void *Test.test*());
declare soft : Exception : inTestCode();
}
Der Aspekt im Grunde sagt, dass jeder Code aus einem Test (das heißt: ein Verfahren, das beginnt mit "Test" in einer Klasse, die mit "Test" endet und "void" zurückgibt), die eine Ausnahme auslöst, sollte vom AspectJ-Compiler akzeptiert werden. Wenn eine Ausnahme auftritt, wird sie vom AspectJ-Compiler umbrochen und als RuntimeException
geworfen.
In der Tat, wenn Sie diesen Test als Teil eines AspectJ Projekts aus Eclipse (mit AJDT installiert), dann wird der Test erfolgreich sein, während ohne den Aspekt wird es nicht sogar kompilieren.
einen Weg IOW die Compiler-Kontrollen überprüft Ausnahmen auszuschalten. –
Ja - ich glaube ich habe das irgendwo gesehen, sogar in unserer eigenen Codebasis. – ripper234