본문 바로가기

개발 로그

개발노트 6 - JUnit Properties 로딩이 안될 때 해결 방법

 

Junit test 없이 개발하면 불안하시죠?

저는 아직은 그럴때도, 그러지 않을 때도 있는데요. 의지는 있는거니...

Test Case(TC)에 따라서 작성하다보면, 놓친 케이스도 보완할 로직도 발견하게 되서 좋습니다. 

오늘은 Spring Batch Test 작성 중에 Properties 정보 로딩이 안되네요.

 

환경 

Spring Boot 4.3.7

Spring Batch 1.4.1 

 

현상

Datasource 속성 중 url 정보 등 properties, yaml 파일 내 정의 된 정보가 null로 바인딩 됩니다. 

 

해결방법

ConfigFileApplicationContextInitializer

application.properties 로딩을 위한 트리거입니다. 

@SpringBatchTest
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = {YourTestJob.class},
        initializers = {ConfigFileApplicationContextInitializer.class} )
public class YourTest {
	...
}

 

보다가 알게 된 내용

@DirtiesContext : 애플리케이션 컨텍스트가 테스트 컨텍스트에 적용되지 않는다. 테스트 클래스에서 애플리케이션 컨텍스트를 변경해서 사용한다는 걸 의미한다. 

@SpringApplicationConfiguration :

스프링 애플리케이션 컨텍스트 모두 로딩한다. (properties, logging 포함)

스프링부트 1.4 이상부터 Deprecated 되었다. 

 

참고한 링크

Spring boot Docs : ConfigFileApplicationContextInitializer : 스프링 부트 2.4 부터 Deprecated

Spring Batch Docs: Creating a Unit Test Class