Remplacez une seule classe @Configuration à chaque démarrage au printemps @Test
Sur mon ressort de démarrage de l'application, je veux remplacer juste un de mes @Configuration
classes avec une configuration de test (en particulier mon @EnableAuthorizationServer
@Configuration
classe), sur l'ensemble de mes tests.
Si loin après un aperçu de printemps de démarrage des caractéristiques de test et le printemps des tests d'intégration de fonctionnalités pas de solution immédiate a surgi:
@TestConfiguration
: C'est pour étendre, pas primordial;@ContextConfiguration(classes=…)
et@SpringApplicationConfiguration(classes =…)
me permet de remplacer l'ensemble de la config, et pas seulement de la seule classe;- Un intérieur
@Configuration
classe à l'intérieur d'un@Test
est suggéré de remplacer la configuration par défaut, mais aucun exemple n'est fourni;
Des suggestions?
source d'informationauteur NotGaeL
Vous devez vous connecter pour publier un commentaire.
Intérieure configuration de test
Exemple intérieure, @Configuration pour votre test:
Niveau de la classe d'annotations
@RunWith(SpringRunner.class)
et@SpringBootTest
sont pour le Printemps de Démarrage 1.4+, mais l'exemple d'un intérieur @Configuration reste valable même pour les versions plus anciennes à l'aide de@RunWith(SpringJUnit4ClassRunner.class)
et@SpringApplicationConfiguration
ou@ContextConfiguration
.@Primaire
La
@Primary
annotation sur le haricot définition est de s'assurer que celui-ci aura la priorité si plusieurs sont trouvés.Réutilisables configuration de test
Si vous souhaitez réutiliser la Configuration de Test pour les tests multiples, vous pouvez définir une Configuration autonome de la classe avec un Ressort de Profil
@Profile("test")
. Ensuite, demandez à votre classe de test pour activer le profil avec@ActiveProfiles("test")
. Voir le code complet:Vous devez utiliser printemps de démarrage des profils:
@Profile("test")
.@Profile("production")
.spring.profiles.active=production
.@Profile("test")
.Ainsi, lorsque votre application démarre, il va utiliser la "production" de la classe et de l'essai des étoiles, il va utiliser le "test" de la classe.
Si vous utilisez intérieure/imbriquée
@Configuration
classe, il sera utilisé à la place de votre application de configuration principal.