스프링에서 @Value 는 properties 파일에서 속성값을 읽어오는데 쓰인다. 테스트 시에는 @Value를 어떻게 사용할까?
public class ValueTest {
@Value("${member.password}")
private String password;
@Test
void valueTest() {
assertThat(password).isNotNull();
assertThat(password).isEqualTo("babo123!");
}
}
위 테스트는 password값이 null로 실패한다.
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = TestConfig.class)
public class ValueTest {
@Value("${member.password}")
private String password;
@Test
void valueTest() {
assertThat(password).isNotNull();
assertThat(password).isEqualTo("babo123!");
}
}
@Configuration
@PropertySource("classpath:application.properties")
public class TestConfig {
}
테스트 컨텍스트에 스프링 컨텍스트를 붙여주자 성공했다. @Value 사용에 스프링 컨텍스트가 필요한 이유가 뭘까?
@Value의 작동방식
@Value는 DI의 일종으로 DI 시점에 발생한다. DI는 스프링 컨테이너가 자동으로 의존관계 주입을 해 주는 것이다. 따라서 스프링 컨텍스트가 필요한 것이다.
더보기
자세한 내용은 아래 글을 참고하자
@SpringBootTest등을 사용한다면 @Value사용에 문제가 없겠지만, 다른 테스트 환경에서는 이 점을 참고하자.
'스프링' 카테고리의 다른 글
spring 요청 Validation 검증, 예외 처리 (0) | 2025.01.16 |
---|---|
dto를 사용해야 하는 이유 (0) | 2024.09.01 |
ApplicationContext (0) | 2024.08.28 |
서블릿과 MVC 패턴과 프론트 컨트롤러 패턴 (1) | 2024.08.27 |
카카오 로그인 (0) | 2024.08.02 |