2015-10-27 64 views
3

我正在爲我的彈簧啓動應用程序編寫集成測試,但是當我嘗試使用@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 線工作得很好

@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); 
    } 
}