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 ? p>
3 Réponses :
J'utiliserais Junit's @beforeclass et @ Afterclass annotations pour indiquer des méthodes pour faire ce type de travail. P>
du @Beforeclass Javadoc: P>
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. p> blockQuote>
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.
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)
La plupart des liens sont morts.
Vous pouvez placer des @beforeclass code> 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 code> qui enregistre si l'installation a déjà été effectuée. Si cela a déjà été fait, la classe auxiliaire ne ferait rien. P>