새소식

반응형
Spring/Test

[Test] 테스트 작성시 @Value 주입 방법

  • -
반응형

@Value를 이용하여 application.yml에 등록한 property값을 읽어오는 경우가 있다

이러한 경우에 test를 작성할 때 원하는 값을 넣어주고 싶은 경우 어떻게 하는지 알아보도록 하자

 

크게 2가지의 상황으로 나누어 볼 수 있다

  • @SpringBootTest
  • @SpringBootTest를 사용하지 않는 경우

 

@Component
@Data
public class TestComponent {

    @Value("${my.test.value}")
    public String initValue;
    
    public void printA() {
        System.out.println(initValue);
    }
}
@SpringBootTest
public class UnitTest {

    @Autowired
    public TestComponent com;

    @Test
    void test() {
        com.printA();
    }

}

 

@SpringBootTest

해당 경우에는 간단하다 

@Value에 값을 전달 할 수 있는 다양한 방법을 SpringBoot에서 제공하고 있다

@SpringBootTest
@TestPropertySource(properties = "my.test.value=asdf2")
public class UnitTest {...}
@SpringBootTest(properties = "my.test.value=asdf")
public class UnitTest {...}

 

예외 경우

위의 케이스 이외의 경우에는 Reflection을 이용해 원하는 값을 채워 넣는 방법이 있다

    @BeforeEach
    void setUp() {
        ReflectionTestUtils.setField(testComponent, "initValue", "myVALUE_TEST");
    }
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.