[Mockito] mock 객체 쉽게 만들기
모하니?/Coding : 2009. 7. 27. 21:15
이지목(easymock)을 사용할 때는 인터페이스의 목만 만들 수 있어서 불편했습니다. 물론, 이지목 확장팩(?)을 이용하면 클래스의 목객체도 만들 수 있었는데, 별도의 라이브러리를 추가해야 하는것이.. 좀 귀찮았죠. 요즘은 어떤지 몰겠습니다. 라이브러리 버전 올리면서 통합 할 법도 한데 말이죠.
암튼.. 저는 이지목보다 조금 더 간편하고 직관적인 라이브러리인 목킷투를 사용하고 있었는데, 예전에 살짝 공부한 상태에서 다시 별로 안 썼더니 그새에 많은 변화가 있었더군요. 그 중 가장 큰 변화가 애노테이션인 듯 한데요. 애노테이션을 이용해서 목객체를 아주 편리하게 만들 수 있었습니다.
@RunWith(MockitoJUnitRunner.class)
public class MemberServiceTest {
MemberService memberService;
@Mock MemberRepository mockMemberRepository;
@Mock SignupSendService mockSignupSendService;
@Before
public void make() throws Exception {
memberService = new MemberService();
memberService.repository = mockMemberRepository;
memberService.signupSendService = mockSignupSendService;
assertNotNull(memberService.repository);
assertNotNull(memberService.signupSendService);
}
...
}
끝입니다. mock(MemberReposiroty.class); 같은 static 메서드 호출(이클립스에서 junit은 static import를 지원하지만 mockto는 지원하지 않아서 수동으로 static import 문을 적어줘야 하는 수고가 있죠.) 없이도 목 객체를 만들어(?) 사용할 수 있습니다. 그 비밀은 바로 @Runwith의 MockitoJUnitRunner에 있지요. 저 러너 설정하는 것이 귀찮다면 JUnit @Before 메서드에서 MockitoAnnotations.initMocks(this); 를 직접 호출해도 되지만, 개인적으로는 이걸 없애고 @RunWith를 사용하는 편이 코드가 더 깔끔한 듯 합니다.
목킷투~ 괜찮다~~
암튼.. 저는 이지목보다 조금 더 간편하고 직관적인 라이브러리인 목킷투를 사용하고 있었는데, 예전에 살짝 공부한 상태에서 다시 별로 안 썼더니 그새에 많은 변화가 있었더군요. 그 중 가장 큰 변화가 애노테이션인 듯 한데요. 애노테이션을 이용해서 목객체를 아주 편리하게 만들 수 있었습니다.
@RunWith(MockitoJUnitRunner.class)
public class MemberServiceTest {
MemberService memberService;
@Mock MemberRepository mockMemberRepository;
@Mock SignupSendService mockSignupSendService;
@Before
public void make() throws Exception {
memberService = new MemberService();
memberService.repository = mockMemberRepository;
memberService.signupSendService = mockSignupSendService;
assertNotNull(memberService.repository);
assertNotNull(memberService.signupSendService);
}
...
}
끝입니다. mock(MemberReposiroty.class); 같은 static 메서드 호출(이클립스에서 junit은 static import를 지원하지만 mockto는 지원하지 않아서 수동으로 static import 문을 적어줘야 하는 수고가 있죠.) 없이도 목 객체를 만들어(?) 사용할 수 있습니다. 그 비밀은 바로 @Runwith의 MockitoJUnitRunner에 있지요. 저 러너 설정하는 것이 귀찮다면 JUnit @Before 메서드에서 MockitoAnnotations.initMocks(this); 를 직접 호출해도 되지만, 개인적으로는 이걸 없애고 @RunWith를 사용하는 편이 코드가 더 깔끔한 듯 합니다.
목킷투~ 괜찮다~~
'모하니? > Coding' 카테고리의 다른 글
[SES 프로젝트] Self English Study 프로젝트를 시작합니다. (2) | 2009.07.31 |
---|---|
[smack] 라이브러리 추가 및 기초 코드 (4) | 2009.07.30 |
[smack] 구글 토크 봇 - 파일럿 프로그래밍 (2) | 2009.07.30 |
스프링 이메일 확장하기 (4) | 2009.07.29 |
[하이버네이트] OneToMany에 FetchType.EAGER 사용시 어떤 일이 생길까? (0) | 2009.07.28 |
[Mockito] mock 객체 쉽게 만들기 (2) | 2009.07.27 |
[하이버네이트]롹킹과 성능 사이에 서다. (1) | 2009.07.23 |
JUnit 4.7 새 기능 @Rule (2) | 2009.07.22 |
윈도우에서 모나코 폰트 이쁘게 쓰기 (6) | 2009.07.22 |
에러 잡기 7단계 (0) | 2009.07.21 |
내일은 꼭 Monaco 폰트 설치해야지 (8) | 2009.07.20 |
인생을 넘 쉽게 살려는거 아냐
그런가봐요. 전 쉬운게 좋아요. 개발도 쉽게 쉽게~