JUnit 에서 SpringRunner 를 사용하지 않는 경우 @Value 처리.

2017-10-24 15:24

간혹 어떤 서비스에 아래와 같이 @Value 가 있다면


@Service public class XXXFindService { @Value("${xxx.status:inactive}") private String status;

해당 Service의 테스트를 SpringRunner가 아닌 MockitoJUnitRunner등을 이용할 경우, @Value에 대한 처리가 난감할 때가 있습니다.

저 같은 경우는 @BeforeClass를 이용해서 system.xx로 넣거나 아래 처럼 처리하기는 하는데 더 좋은 방법이 있을까요?


@InjectMocks private XXXFindService service; @Before public void setup() { ReflectionTestUtils.setField(service, "xxx.status", "active"); }

3개의 의견 from SLiPP

2017-10-24 18:39

테스트하는 시점에 테스트용 설정 파일을 만들어서 분리하면 되지 않을까?

spring boot라면 테스트용 Profile을 만들고 해당 profile에 따른 설정 파일을 로딩하도록 할 수 있으니 가능하리라 생각되는데..

2017-10-24 23:05

@자바지기 "테스트 설정 파일"이라는게 Spring 사용하는게 아닌가요? spring context를 올리지 않고 단순 mock만으로 하는 테스트의 경우라서요. 음.. 아.. application-xxx.properties 를 직접 읽어서 resource로 돌려도 되기는 하겠네요. ;;;

2017-10-25 10:12

@eclipse4j 아아. spring context를 올리는 것으로 생각했는데 그렇지 않다면 지금 사용하는 방법이 그나마 가장 낫지 않을까? application-xxx.properties 를 직접 읽어서 resource를 돌리는 것도 그리 좋은 방법은 아닐 것 같은데..

의견 추가하기

연관태그

← 목록으로