반응형

Mockito로는 private Method나 field값 변경을 하려면, reflection등을 이용하여 구현을 해야 하고,

제대로 동작하는 것을 만들기 위해서는 Mockito를 뜯어서 내부 구조까지 파악을 해야한다.

 

처음에 조금 시도해보다가 때려치고..

PowerMock이란 것이 Mockito API를 지원해준다는 것을 확인하고, 도입을 해보았다.

https://code.google.com/p/powermock/

 

PowerMock은 private field / method의 mock을 static method등을 이용하여, 편리하게 만들 수 있도록 제공해준다.

또한, 가끔 Mockito의 @InjectMocks로 mocking이 되지 않는 객체들도, 이걸 이용해서 만들면 어느정도 해결이 된다.

 

대부분의 기능은 Mockito로 해결이 가능하며, private field에 값을 세팅하는 예제만 작성해본다. 

 

A라는 클래스에 abc라는 private 객체에 값을 세팅하는 경우 아래와 같이 작성 

 

MemberModifier.field(A.class, "abc").set(aObject, "값");

 

기존에 private method를 다 public으로 바꾸거나, private field의 경우 setter, getter등을 이용하였는데,

이걸 사용하고나서, 다 없애버렸다. 

반응형
,