2015-10-27 1 views
3

Я пишу интеграционный тест для моего приложения загрузки Spring, но когда я пытаюсь переопределить некоторые свойства с помощью @TestPropertySource, он загружает файл свойств, определенный в контексте xml, но не переопределяет свойства, определенные в аннотация.@TestPropertySource не загружает свойства

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = {DefaultApp.class, MessageITCase.Config.class}) 
@WebAppConfiguration 
@TestPropertySource(properties = {"spring.profiles.active=hornetq", "test.url=http://www.test.com/", 
        "test.api.key=343krqmekrfdaskfnajk"}) 
public class MessageITCase { 
    @Value("${test.url}") 
    private String testUrl; 

    @Value("${test.api.key}") 
    private String testApiKey; 

    @Test 
    public void testUrl() throws Exception { 
     System.out.println("Loaded test url:" + testUrl); 
    } 



    @Configuration 
    @ImportResource("classpath:/META-INF/spring/test-context.xml") 
    public static class Config { 

    } 
} 
+1

вы решить эту проблему? встроенные свойства через TestPropertySource, похоже, тоже не работают для меня. – Nishith

+0

Пока нет, но я изменил свою конфигурацию, чтобы использовать аннотацию '@ IntegrationTest' вместо' @ TestPropertySource'. Я отправлю ответ в ближайшее время. – kosker

ответ

0

Я проверил эту функцию с Spring загрузкой 1,4 Line ниже работает довольно хорошо

@TestPropertySource(properties = { "key=value", "eureka.client.enabled=false" }) 

Тем не менее новые @SpringBootTest аннотации работают, а

@RunWith(SpringRunner.class) 
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, 
    properties = { "key=value", "eureka.client.enabled=false" } 
) 
public class NewBootTest { 

    @Value("${key}") 
    public String key; 

    @Test 
    public void test() { 
     System.out.println("great " + key); 
    } 
}