Cette question fait suite à la question "SpringBoot: comment exécuter des tests deux fois, avec deux fichiers de configuration différents" .
J'utilise pour compiler mon projet en utilisant mvn clean install
. Ce faisant, maven lance également mes tests unitaires et je sais immédiatement si mon développement est correct.
Je travaille actuellement sur un module qui intègre une connexion JMS. mon module prend en charge deux bus JMS: EMS et AMQ. Le bus à utiliser est spécifié dans la configuration de mon module
En conséquence, je dois créer deux profils, un pour EMS et un pour AMQ.
Cependant, lorsque je lance mon mvn clean install
, je veux que maven lance automatiquement les tests en utilisant les deux profils, pas un seul; Je ne veux pas avoir à le lancer deux fois: mvn clean test -Dspring.profiles.active = ems; mvn clean test -Dspring.profiles.active = amq
Merci pour votre aide
4 Réponses :
Vous pouvez passer les deux profils séparés par une virgule:
mvn clean install -Dspring.profiles.active = ems, amq
Et puis vous aurez deux profils actifs:
Les profils suivants sont actifs: ems, amq
Vous pouvez également spécifier dans le src / test / resources / application.properties
les propriétés spécifiques qui s'appliquent à chaque fois que les tests Spring sont exécutés. Cela me semble plus propre que de les spécifier sur la ligne de commande Maven. Pour votre cas:
spring.profiles.active=ems,amq
Je pense qu'il y a un manque de compréhension; Il semble que lorsque j'exécute mes tests avec spring.profiles.active = ems, amq
:
Ce que je veux est différent:
ems
(et uniquement ems
) activé amq
(et uniquement amq
) activé Pour le moment, je n'arrive pas à trouver une solution; chaque indice est le bienvenu
Cordialement
J'ai trouvé une solution à mon problème; une sorte d'astuce basée sur:
SpringJUnit4ClassRunner
redéfinir la méthode run ()
afin de:
run ()
public class MultiProfileTestRunner extends SpringJUnit4ClassRunner { ... public void run(RunNotifier notifier) { System.setProperty("spring.profiles.active", "ems"); super.run(notifier); System.setProperty("spring.profiles.active", "amq"); super.run(notifier); }
Entre les deux appels à super.run ()
nous devons 'forcer' Spring à recharger son contexte, autrement le changement de profil n'est pas pris en compte
Je l'ai fait en utilisant l'annotation @DirtiesContext (classMode = AFTER_CLASS)
sur mes tests