2009-03-10 3 views
3

Je veux mettre en œuvre exception de vérification (comme dans JUnit 4) en utilisant JUnit 3. Par exemple, je voudrais pouvoir écrire des tests comme celui-ci:Comment personnaliser le comportement de gestion des exceptions dans JUnit 3?

public void testMyExceptionThrown() throws Exception { 
    shouldThrow(MyException.class); 

    doSomethingThatMightThrowMyException(); 
} 

Cela devrait réussir si et seulement si un MyException est jeté. Il y a la classe ExceptionTestCase dans JUnit, mais je veux quelque chose que chaque méthode test * peut décider d'utiliser ou non. Quel est le meilleur moyen d'y parvenir?

Répondre

9

Est-ce que la solution:

public void testMyExceptionThrown() throws Exception { 
    try { 
     doSomethingThatMightThrowMyException(); 
     fail("Expected Exception MyException"); 
    } catch(MyException e) { 
     // do nothing, it's OK 
    } 
} 

convenir à ce que vous pensez?

Jetez également un oeil à this thread, où quelqu'un a créé une solution proxy pour JUnit3 qui semble être une autre possibilité pour résoudre votre problème.

1

L'approche la plus simple consiste à utiliser l'idiome Execute Around pour faire abstraction du try-catch que vous écrivez habituellement. Plus sophistiqué est de noter que TestCase est juste Test. J'oublie les détails, mais nous pouvons surcharger l'exécution du test (que le framework appelle initialement par run(TestResult) spécifié dans Test). Dans ce remplacement, nous pouvons placer le try-catch, selon Execute Around. La méthode testXxx doit appeler une méthode set pour installer le type d'exception attendu.

2

Il n'est pas nécessaire d'implémenter votre propre solution car il y en a déjà une qui peut être utilisée avec JUnit3 (et tout autre framework de test): catch-exception.

Questions connexes