Je veux écrire des cas de test pour une masse de code, j'aimerais connaître les détails de la @Rule
fonction d'annotation JUnit , afin de pouvoir l'utiliser pour écrire des cas de test. Veuillez fournir quelques bonnes réponses ou liens, qui donnent une description détaillée de ses fonctionnalités à travers un exemple simple.
java
junit
junit4
junit-rule
Dipak
la source
la source
@Rule
plutôt bien expliqué , en particulier la dernière section "La séquence des événements en détail"Réponses:
Les règles sont utilisées pour ajouter des fonctionnalités supplémentaires qui s'appliquent à tous les tests d'une classe de test, mais d'une manière plus générique.
Par exemple, ExternalResource exécute le code avant et après une méthode de test, sans avoir à utiliser
@Before
et@After
. Utiliser unExternalResource
plutôt que@Before
et@After
donne des opportunités pour une meilleure réutilisation du code; la même règle peut être utilisée à partir de deux classes de test différentes.La conception était basée sur: les intercepteurs dans JUnit
Pour plus d'informations, consultez le wiki JUnit: Règles .
la source
Les règles Junit fonctionnent sur le principe de l'AOP (programmation orientée aspect). Il intercepte la méthode de test, offrant ainsi la possibilité de faire certaines choses avant ou après l'exécution d'une méthode de test particulière.
Prenons l'exemple du code ci-dessous:
Chaque fois que la méthode de test ci-dessus est exécutée, un dossier temporaire est créé et il est supprimé après l'exécution de la méthode. Voici un exemple de règle prête à l'emploi fournie par Junit.
Un comportement similaire peut également être obtenu en créant nos propres règles. Junit fournit l'interface TestRule, qui peut être implémentée pour créer notre propre règle Junit.
Voici un lien utile pour référence:
la source
L'explication de son fonctionnement:
JUnit encapsule votre méthode de test dans un objet Statement ainsi une instruction et
Execute()
exécute votre test. Ensuite, au lieu d'appelerstatement.Execute()
directement pour exécuter votre test, JUnit transmet l'instruction à une TestRule avec l'@Rule
annotation. La fonction "apply" de TestRule retourne une nouvelle instruction donnée la déclaration avec votre test. LaExecute()
méthode de la nouvelle instruction peut appeler la méthode d'exécution de l'instruction de test (ou non, ou l'appeler plusieurs fois) et faire ce qu'elle veutbefore and after
.Maintenant, JUnit a une nouvelle instruction qui fait plus que simplement exécuter le test, et il peut à nouveau la transmettre à d'autres règles avant d'appeler enfin Execute.
la source
Les règles sont utilisées pour améliorer le comportement de chaque méthode de test de manière générique. La règle Junit intercepte la méthode de test et nous permet de faire quelque chose avant qu'une méthode de test ne commence l'exécution et après qu'une méthode de test ait été exécutée.
Par exemple, en utilisant la règle @Timeout , nous pouvons définir le délai d'expiration pour tous les tests.
La règle @TemporaryFolder est utilisée pour créer des dossiers temporaires, des fichiers. Chaque fois que la méthode de test est exécutée, un dossier temporaire est créé et il est supprimé après l'exécution de la méthode.
Vous pouvez voir des exemples de certaines règles intégrées fournies par junit sur ce lien .
la source