Mockito

김민규·2일 전

겅부

목록 보기
18/18

Mockito란?

단위 테스트 진행에 필요한 모의 객체(@Mock)를 관리해주는 자바의 오픈소스 프레임워크이다.
모의 객체는 실제 객체와 비슷하지만, 개발자가 테스트 시나리오에 따라 제어할 수 있는 가짜 객체이다.

Mock, Stub, Spy

Mock

가짜 객체를 생성하고, 메서드간 상호작용을 검증한다.

  • 외부 작업의 호출 여부를 검증할 때
  • 특정 메서드가 원하는 횟수만큼 정확히 호출되었는지
  • 메서드에 전달한 인자가 올바른지
  • 외부 시스템에 영향을 주지 않고 객체 간 상호작용르 테스트할 때

verify() 를 통해 메서드의 호출횟수를 카운팅 할 수 있다.
예를 들어 email중복되는 상황에서 저장메서드가 실행되지 않음을 테스트할 수 있다.

Stub

개발자가 미리 선언한 결과를 반환한다.
DB에 접속하지 않고도 DB와 연계되는 기능을 테스트할 수 있다.

Product product = new Product(1L,"키보드",3000,5);
when(productRepository.findById(1L)).thenReturn(Optional.of(product));
  • DB조회 결과가 필요할 때
  • 외부API의 응답이 필요할 때
  • 오류, Null등의 상황을 테스트할 때

spy

실제 객체를 감싸, 실제 메서드를 실행하도록 만드는 대역이다.
부분적으로 Stub을 도입할 수 있으며, 이 때는 when().thenReturn()보다 doReturn().when()이 권장된다.
spy자주 사용하면 결합도가 상승할 위험이 있어, 꼭 필요한 부분에만 사용을 고려해야 한다.

0개의 댓글