프로그래밍 노트/TEST를 해보자
Mockito 어노테이션(@Mock, @InjectMocks)
깡냉쓰
2019. 11. 18. 22:22
728x90
반응형
Mockito 관련 어노테이션
@RunWith(MockitoJunitRunner.class)
Mockito에서 제공하는 목객체를 사용하기 하기위해 위와같은 어노테이션을 테스트클래스에 달아준다.
@RunWith(MockitoJunitRunner.class)
public class Test(){
...
}
⇒ 꼭 달아줘야하는건 아니지만, 이 어노테이션을 달지 않으면 아래와 같은 작업이 필요하다.
publc class Test(){
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
}
}
@Mock
mock 객체를 생성한다.
@InjectMocks
@InjectMocks라는 어노테이션이 존재하는데, @Mock이 붙은 목객체를 @InjectMocks이 붙은 객체에 주입시킬 수 있다.
실무에서는 @InjectMocks(Service) @Mock(DAO) 이런식으로 Service테스트 목객체에 DAO 목객체를 주입시켜 사용한다.
public class MembmerService{
private MemberDao dao;
public Member createMember(Member member){
if(dao.getMemberCount(member) > 0){
...
throw new Exception();
}
...
}
}
public class MemberDao{
public int getMemberCount(Membmer member){
// 미완성
}
}
@Mock
MemberDao memberDao;
@InjectMocks
MemberService memberService;
@Test
public void test(){
when(memberDao.getMemberCount()).thenReturn(0);
Member member = new Member("corn", 25);
assertThat(memberService.createMember(member), is(member));
}
728x90
반응형