Vous pouvez le faire avec AspectJ. Vous déclarez un jointure (dans ce cas, invocation de la méthode foo) et "assouplissez" l'exception.
Modifier Pour élaborer un peu sur ce point:
Supposons que vous avez la classe suivante Bar
:
public class Bar {
public void foo() throws Exception {
}
}
... et vous avez un test comme celui-ci:
import junit.framework.TestCase;
public class BarTest extends TestCase {
public void testTestFoo() {
new Bar().foo();
}
}
Ensuite, évidemment, le test ne va pas compiler. Il donnera une erreur:
Unhandled exception type Exception BarTest.java(line 6)
Maintenant, pour surmonter cela avec AspectJ, vous écrivez un aspect très simple:
public aspect SoftenExceptionsInTestCode {
pointcut inTestCode() : execution(void *Test.test*());
declare soft : Exception : inTestCode();
}
L'aspect dit essentiellement que tout code à partir d'un test (ex: une méthode qui commence par "test" dans une classe qui se termine par "Test" et retourne "void") qui déclenche une exception devrait être acceptée par le compilateur AspectJ. Si une exception se produit, elle sera enveloppée et renvoyée en tant que RuntimeException
par le compilateur AspectJ.
En effet, si vous exécutez ce test dans le cadre d'un projet AspectJ à partir d'Eclipse (avec AJDT installé), alors le test réussira, alors que sans l'aspect, il ne sera même pas compilé.
OIEau un moyen de désactiver les contrôles du compilateur sur les exceptions vérifiées. –
Oui - Je pense que j'ai vu quelque part, même dans notre propre base de code. – ripper234