복붙노트

[SPRING] @TestPropertySource가 속성을로드하지 않습니다.

SPRING

@TestPropertySource가 속성을로드하지 않습니다.

내 스프링 부팅 응용 프로그램에 대한 통합 테스트를 작성하고 있지만 @TestPropertySource를 사용하여 일부 속성을 재정의하려고하면 컨텍스트 xml에 정의 된 속성 파일이로드되지만 주석에 정의 된 속성을 재정의하지는 않습니다.

@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. ==============================

    1.스프링 부트 1.4에서이 기능을 테스트했습니다. 아래 라인은 꽤 잘 작동합니다.

    스프링 부트 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);
        }
    }
    
  2. from https://stackoverflow.com/questions/33371875/testpropertysource-is-not-loading-properties by cc-by-sa and MIT license