간혹 어떤 서비스에 아래와 같이 @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
테스트하는 시점에 테스트용 설정 파일을 만들어서 분리하면 되지 않을까?
spring boot라면 테스트용 Profile을 만들고 해당 profile에 따른 설정 파일을 로딩하도록 할 수 있으니 가능하리라 생각되는데..
@자바지기 "테스트 설정 파일"이라는게 Spring 사용하는게 아닌가요? spring context를 올리지 않고 단순 mock만으로 하는 테스트의 경우라서요. 음.. 아.. application-xxx.properties 를 직접 읽어서 resource로 돌려도 되기는 하겠네요. ;;;
@eclipse4j 아아. spring context를 올리는 것으로 생각했는데 그렇지 않다면 지금 사용하는 방법이 그나마 가장 낫지 않을까? application-xxx.properties 를 직접 읽어서 resource를 돌리는 것도 그리 좋은 방법은 아닐 것 같은데..
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.