6
votes

Invocation de test: comment faire de la configuration commune à toutes les suites de test

Y a-t-il un moyen de savoir dans une classe de test Junit 4, si la classe a été initiée par une suite de test? J'ai des choses globales que je veux courir avant tous les tests (concernant DB en mémoire), alors j'ai pensé à le faire dans la combinaison de test. Cependant, je veux toujours pouvoir initier un test à la fois sans crise de test. J'ai donc besoin de savoir si j'ai besoin d'initialiser les choses globales dans la partie @Before de l'essai ... Est-ce que quelqu'un sache-t-on si c'est possible ?


0 commentaires

3 Réponses :


2
votes

J'utiliserais Junit's @beforeclass et @ Afterclass annotations pour indiquer des méthodes pour faire ce type de travail.

du @Beforeclass Javadoc:

Parfois, plusieurs tests doivent partager une configuration de calcul (comme se connecter à une base de données). Bien que cela puisse compromettre le Indépendance des tests, parfois c'est une optimisation nécessaire. Annotant une méthode de NO-ARC annulée publique Statique avec des causes @Beforeclass Il doit être exécuté une fois avant l'une des méthodes de test dans la classe. le @Beforeclass Les méthodes de superclasses seront courues avant celles de la classe actuelle.


1 commentaires

Ceci est pertinent pour plusieurs méthodes annotées @Test à l'intérieur d'un fichier de classe de test, qui n'est pas le scénario que je traite, j'en ai besoin pour plusieurs classes de test.



6
votes

Il y a plusieurs façons d'y parvenir. Le plus simple et le plus simple consiste à avoir un «test» qui est exécuté au début et à la fin de votre suite qui configurez votre base de données, puis définissez un drapeau global. Dans votre @Before et @After tests, vous vérifiez que ce drapeau et si nécessaire, effectuez la configuration / dérappement.

@RunWith(MySuite.class)


1 commentaires

La plupart des liens sont morts.



0
votes

Vous pouvez placer des @beforeclass dans chaque suite de tests, qui déléguent une classe auxiliaire qui fait la configuration commune. La classe auxiliaire pourrait avoir un statique booléen qui enregistre si l'installation a déjà été effectuée. Si cela a déjà été fait, la classe auxiliaire ne ferait rien.


0 commentaires