@TestPropertySource et @PropertySource ne fonctionnent pas pour JUnit
Il ne semble pas que ce que je fais au Printemps 4.1.17 avec Spring Boot 1.2.6.VERSION fonctionne à tous. Je veux juste accéder aux propriétés de l'application et de les remplacer avec de test si nécessaire (sans utiliser le hack pour injecter un PropertySource manuellement)
cela ne fonctionne pas..
@TestPropertySource(properties = {"elastic.index=test_index"})
ni ce que cela..
@TestPropertySource(locations = "/classpath:document.properties")
ni ce..
@PropertySource("classpath:/document.properties")
plein de cas de test..
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
@TestPropertySource(properties = {"elastic.index=test_index"})
public class PropertyTests {
@Value("${elastic.index}")
String index;
@Configuration
@TestPropertySource(properties = {"elastic.index=test_index"})
static class ContextConfiguration {
}
@Test
public void wtf() {
assertEquals("test_index", index);
}
}
résultant dans
org.junit.ComparisonFailure:
Expected :test_index
Actual :${elastic.index}
Il semble qu'il y a beaucoup d'informations contradictoires entre les 3.x et 4.x et je ne peux pas trouver quelque chose qui va travailler pour vous.
Toute réflexion serait grandement appréciée. Cheers!
source d'informationauteur Thomas Beauvais
Vous devez vous connecter pour publier un commentaire.
S'avère le meilleur moyen (jusqu'à ce que le Printemps corrige cet oubli) est un
PropertySourcesPlaceholderConfigurer
qui apportera à tester.propriétés (ou ce que vous voulez) et@Import
ou prolonger@Configuration
.Cela vous permet de définir les valeurs par défaut dans l'application.propriétés et de les remplacer dans l'essai.les propriétés. Bien sûr, si vous disposez de plusieurs régimes, vous pouvez ensuite configurer le
PropertyTestConfiguration
classe que nécessaire.Et de l'utiliser dans un test unitaire.
J'ai utilisé le
locations
propriété de@TestPropertySource
pour remplacer (ou d'ajouter) des propriétés.a fonctionné pour moi (printemps 4.2.4). Primordial propriétés à travers le
n'a pas. Même si la javadoc dit que ces propriétés ont la plus haute priorité. Un bug peut-être?
Mise à jour
Le bug devrait être résolu au Printemps de démarrage de la version 1.4.0. Voir la commit qui ferme le problème.
Maintenant, les propriétés déclarées dans le moyen doit obtenir la priorité.
Votre utilisation de @Valeur nécessite un PropertySourcesPlaceholderConfigurer bean pour résoudre
${...}
des espaces réservés. Voir la accepté de réponse ici: @Valeur non définie, via Java-test configurées contexteAvez-vous essayé d'utiliser
@PropertySource("classpath:document.properties")
ou@PropertySource("classpath*:document.properties")
?Pour Moi @TestPropertySource("classpath:xxxxxxxx.les propriétés") a travaillé