JUnit @BeforeClass non statique de la contourner pour le Printemps de Démarrage de l'application
JUnit est @BeforeClass
annotation doit être déclarée statique si vous voulez exécuter une fois avant que tous les @Test
méthodes. Cependant, cela ne peut pas être utilisé avec l'injection de dépendance.
Je veux nettoyer une base de données que je @Autowire
avec Spring Boot, une fois avant que je lance mon JUnit tests. Je ne peux pas @Autowire
champs statiques, donc j'ai besoin de penser à un travail autour de. Des idées?
OriginalL'auteur Kingamere | 2015-10-05
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser
@Before
(au lieu de@BeforeClass
) (ouBeforeTransaction
(selon la façon dont vous initialiser la base de données)). Cette annotation doit être attaché à un public non statique méthode.De cours:
@Before
exécuter avant CHAQUE cas de test de la méthode (pas comme@BeforeClass
qui s'exécute qu'une seule fois.) Mais si vous voulez l'exécuter exactement une fois, puis utiliser une statique marqueur de champ.c'est ce que je fais quand je dois utiliser JUnit. Mais je préfère utiliser TestNG qui a toutes les annotations disponibles sur les méthodes statiques : dans votre cas avec TestNG, @BeforeClass sera définie sur un non-méthodes statiques, et l'exécution d'une fois avant de toutes les méthodes de test à l'intérieur de cette classe.
OriginalL'auteur Ralph
D'essayer cette solution:
https://stackoverflow.com/a/46274919/907576 :
avec
@BeforeAllMethods
/@AfterAllMethods
annotations vous pouvez exécuter n'importe quelle méthode de la classe de Test dans une instance contexte, où tous les injecté valeurs sont disponibles.Dans la solution mentionnée il y a des références à des dépendances avec les annotations. Parce que stackoverflow ne permet pas de dupliquer les réponses que je viens de mentionner les références à un autre plus descriptif réponse.
OriginalL'auteur radistao
Ont un look à la DBUnit bibliothèque - il est conçu pour effectuer les actions que vous décrivez. Il peut créer des & abattre les instances de base de données et vous fournit des moyens simples de le faire.
OriginalL'auteur TrueDub
Bien accepté réponse est intelligent, semble hacky. Avez-vous essayé d'utiliser un Constructeur normal?
OriginalL'auteur Arun Avanathan