Définissez les Propriétés du Système ou des Variables d'Environnement Avant de la Propriété de l'espace Réservé avec SpringJunit4ClassRunner
J'ai un principal app-context.xml qui définit une propriété de l'espace réservé à deux endroits: fichier de propriétés par défaut et une option de remplacement de fichier:
<context:property-placeholder
location="classpath:config.properties,${configOverride}"
ignore-resource-not-found="true" />
L'option remplacer emplacement permet de spécifier un autre fichier de propriétés (par exemple, "- DconfigOverride=file:/home/app/config.les propriétés") avec les propriétés que devrait être remplacé.
Pour mes tests unitaires, je suis aide d'un test de contexte que les importations app-context.xml:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:test-context.xml"})
public class UserServiceTest {
...
}
Comment puis-je configurer les propriétés du système ou des variables d'environnement au sein de l'application avant le contexte d'application est chargé? Je voudrais obtenir le même effet que le réglage "-DconfigOverride=classpath:testConfig.les propriétés" dans toutes les classes de test sans avoir à spécifier une ligne de commande arg, si possible.
Vous devez vous connecter pour publier un commentaire.
Penser ,
SpringJUnit4ClassRunner
et le réglage du système de la propriétéconfigOverride
dans son constructeur/initialisation du blocExtendedSpringJUnit4ClassRunner
à@RunWith
Une autre alternative est la définition de l'environnement de la propriété dans un @BeforeClass méthode annotée, qui sera invoquée avant le Contexte de Configuration qui se passe.
System.clearProperty("configOverride")
dans un@AfterClass
Voici ce que j'ai fait - je n'ai pas eu à modifier l'unité de classes de test. Malheureusement, je n'ai pas mis le "configOverride de la propriété" (voir AhamedMustafaM réponse à une façon de le faire) et il s'est plutôt substituer l'origine de la propriété de l'espace réservé définition (j'ai essayé de nouveau après mes premières tentatives ont échoué et il a obtenu de travailler).
J'ai ajouté la ligne suivante à mon testContext.xml:
Note de la commande="-999" attribut, qui est utilisé pour assurer la priorité sur l'origine de la propriété-définition de l'espace réservé(s). Aussi j'ai mis "ignore-insolubles" à "true" à déléguer tout ou insolubles propriétés à l'origine de l'espace réservé configurer.
Mon problème était similaire, mais je voulais mettre l'
spring.profiles.active
variable d'environnement, et il s'est avéré que j'avais juste besoin de jeter@ActiveProfiles()
avec les valeurs que je voulais sur le test lui-même.