Comment définissez la variable d'environnement ou du système de propriété au printemps tests?
Je voudrais écrire quelques tests qui vérifient le XML de configuration Spring de GUERRE déployés. Malheureusement, certains haricots exigent que certaines variables d'environnement ou les propriétés du système sont définies. Comment puis-je définir une variable d'environnement avant le printemps, les haricots sont initialisés lors de l'utilisation de la pratique de test de style avec @ContextConfiguration?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:whereever/context.xml")
public class TestWarSpringContext { ... }
Si je configurer le contexte de l'application avec des annotations, je ne vois pas un crochet où je peux faire quelque chose avant que le printemps de l'initialisation du contexte.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez initialiser le Système de la propriété dans un initialiseur statique:
L'initialiseur statique de code sera exécuté avant le printemps contexte de l'application est initialisé.
@BeforeClass
méthode pour définir le système de propriété et d'un@AfterClass
méthode pour le supprimer également de travailler, et de bien nettoyer après lui-même. (N'essayez pas, cependant.)La bonne façon de le faire, en commençant par le Printemps 4.1, est d'utiliser un
@TestPropertySource
annotation.Voir @TestPropertySource dans le Printemps docs et La documentation javadoc.
@TestPropertySource(properties={"spring.cloud.config.label=feature/branch"})
On peut aussi utiliser un test ApplicationContextInitializer pour initialiser un système de propriété:
et puis le configurer sur la classe de test en plus du Printemps contexte fichier de config emplacements:
De cette façon, la duplication de code peut être évité si un certain système de la propriété doit être définie pour tous les tests unitaires.
Vous pouvez définir les propriétés du Système en tant que VM arguments.
Si votre projet est un projet maven ensuite, vous pouvez exécuter la commande suivante lors de l'exécution de la classe de test:
De la classe de Test:
Si vous souhaitez exécuter le test individuel de la classe ou de la méthode de l'éclipse alors :
1), Passez à Exécuter -> Exécuter Configuration
2) Sur le côté gauche, sélectionnez votre classe de Test sous la Junit section.
3) procédez de la manière suivante :
Toutes les réponses ici actuellement, seul le système de propriétés qui sont différentes des variables d'environnement qui sont plus complexes à régler, esp. pour les tests. Heureusement, au-dessous de classe peut être utilisée pour que et la classe docs a de bons exemples
EnvironmentVariables.html
Un exemple rapide de la documentation, modifié pour fonctionner avec @SpringBootTest
Si vous voulez que vos variables valable pour tous les tests, vous pouvez avoir un
application.properties
fichier dans votre essai de répertoire des ressources (par défaut:src/test/resources
) qui ressemble à quelque chose comme ceci:Ce sera ensuite chargé et utilisé, sauf si vous avez définitions via
@TestPropertySource
ou une méthode similaire - l'ordre exact dans lequel les propriétés sont chargés peuvent être trouvés dans le Ressort de la documentation chapitre 24. Extériorisés De Configuration.Pour les Tests Unitaires, la variable Système n'est pas encore instanciée quand je fais "mvn clean install", car il n'y a pas de serveur de l'application. Afin de définir les propriétés du Système, j'ai besoin de le faire dans pom.xml. Comme: