SpringFramework/JUnit Test

단위테스트시 @value 값 주입 방법

lovineff 2021. 5. 10. 14:19

SpringBootTest 어노테이션이 없는 단위 테스트시 @value값이 주입되지 않는 경우가 발생한다.

아래 코드를 추가하면 설정파일을 자동으로 읽어와 @value에 주입한다.

 

@ContextConfiguration(
initializers = {ConfigFileApplicationContextInitializer.class}
)

 

예제

@SpringBootTest 미사용시

@DisplayName("Redis 기본 기능 테스트")
@ActiveProfiles(profiles = "local")
@ExtendWith(SpringExtension.class)
@ContextConfiguration(
        initializers = {ConfigFileApplicationContextInitializer.class},	// application.yml 파일을 읽어온다.
        classes = {RedisCacheConfig.class}	// @value 사용 클래스
)
class CacheServiceTest {
	// some codes
}

 

@SpringBootTest 어노테이션 사용시

@DisplayName("Redis 기본 기능 테스트")
@ActiveProfiles(profiles = "local")
@SpringBootTest(classes = {RedisCacheConfig.class}) // @ExtendWith(SpringExtension.class)을 포함한다.
class CacheServiceTest {
	// some codes
}