samedi 6 octobre 2012

Junit @Rule



Récemment, je suis tombé sur un article intéressant sur Junit et l’annotation @Rule que je ne connaissais pas.Dans cet article, je vais vous présenter le principe de fonctionnement.

En faite, dans les version précédentes de Junit, on était obligé de déclarer @SetUp et @TearDown pour chaque classe de test.Dans les versions récentes de Junit, il est maintenant possible de définir ses propres rules avec l’annotation @Rule.Autrement dit, durant le déroulement de votre test, vous allez pouvoir agir dessus.
Pour vous donnez une idée, voici quelques exemples de Rules standard :

  • ExpectedException: vérifie qu’une exception est levée (généralise @Test(expected=...) à une classe de test)
  • Timeout: vérifie qu’un test ne dépasse pas une certaine durée (généralise @Test(timeout=...) à une classe de test
  • ExternalResource: base pour gérer une ressource: ouvrir/fermer une connexion par exemple
    • TemporaryFolder: créer/détruit un dossier temporaire pour les tests qui produisent des fichiers
  • TestWatchman: base pour observer l’exécution d’un test sans intervenir
    • TestName: donne accès au nom du test depuis la méthode de test
  • Verifier: base pour vérifier l’état de l’objet de test

Voici les deux liens qui m’ont permis de découvrir cette nouvelle notion :
http://blog.objetdirect.com/divers/quoi-de-neuf-chez-junit
http://www.dzone.com/links/r/junit_rules_3.html