개인 플젝을 진행하면서 unit test를 적용하기로 하였다. 그 중 Service 레이어에 해당하는 unit Test 적용 방법이다.
@ExtendWith(MockitoExtension.class) // (1
public class TodoServiceTest {
@InjectMocks // (2
private TodoService todoService;
@Mock // (3
private TodoRepository todoRepository;
}
(1 : @Mock 사용을 위해 Mockito 테스트 실행을 확장시켜주기위해 붙인다.
(2 : @Mock가 붙은 객체를 @InjectMock에 붙은 객체에 주입 시킬 수 있다.
(3 : 로직이 삭제된 빈 껍데기로 실제 메서드는 가지고 있으나 내부구현이 없는 목업 상태로 만든다.
가끔 @Spy
라는 어노테이션을 쓰기도 하는데, 지정한 객체의 일부만 Mocking 하고 나머지는 기존 기능 그대로 사용하기 위해 사용된다.
@ExtendWith(MockitoExtension.class) // (1
public class TodoServiceTest {
@Spy
@InjectMocks // (2
private TodoService todoService;
@Mock // (3
private TodoRepository todoRepository;
}