What Is Mockito?

uglyduck.dev·2020년 9월 29일
0

개념 모아 🗂

목록 보기
7/40

정의

  • Mockito는 자바 애플리케이션의 효과적인 단위 테스트에 사용되는 자바 기반 라이브러리인 Mock 프레임워크로써 인터페이스를 Mocking하는 데 사용되므로 단위 테스트에 사용할 수있는 Mock 인터페이스에 더미 기능을 추가 할 수 있음

목표 및 구성요소

  • 테스트 더블은 테스트 되는 다른 개체로 전달될 수 있음
  • 테스트를 통해 테스트 중에 클래스가 올바르게 반응하는지 확인할 수 있음
    -> 예를 들어, Mock 개체의 특정 메서드가 호출되었는지 확인할 수 있음
  • 테스트를 실행하는 동안 클래스만 테스트하고 테스트가 부작용에 영향을 받지 않음

더미 객체(Dummy Object)

  • 테스트할 때 객체만 필요하고 해당 객체의 기능까지는 필요하지 않은 경우에 사용한다. 더미 객체의 메서드가 호출되는 경우에는 정상 동작을 실행하지 않고 예외가 발생한다.

테스트 스텁(Test Stub)

  • 더미 객체에 단순한 기능을 추가한다. 객체의 특정 상태를 가정해서 작성하며 특정한 값을 반환하거나 특정한 메시지를 출력하게 한다.

테스트 스파이(Test Spy)

  • 주로 테스트 대상 클래스가 의존하는 클래스로의 출력을 검증하는 데 사용한다. 대상 클래스가 실행되는 동안 특정 의존 클래스로의 호출(또는 호출 결과)을 잡아내며 대상 클래스의 실행이 끝난 후에는 원하는 대로 호출되었는지 검사한다.

가짜 객체(Fake Object)**

  • 실제 의존 클래스이 기능을 대체해야 할 경우에 사용하며 실제 의존 클래스의 기능 중 전체나 일부를 훨씬 단순하게 구현한다. 실제 의존 클래스가 구현되지 않았거나, 너무 느리거나, 테스트 환경에서는 사용할 수 없을 때 가짜 객체를 사용한다.

목 객체(Mock Object)

  • 미리 정의한 기대 값과 실체 호출을 단언문으로 비교해 문제가 있으며 테스트 메서드를 대신해 모의 객체가 테스트를 실패하게 한다. 목 객체는 테스트 더블의 모든 형태들을 포함하는 의미로 사용되기도 한다.

Mockito의 장점

  • Mock 객체를 직접 작성할 필요가 없음
  • 안전한 리팩토링(인터페이스 메소드 이름을 바꾸거나 매개 변수를 재 정렬하면 런타임에 Mocks가 생성 될 때 테스트 코드가 중단되지 않음)
  • 예외 지원
  • 반환 값 지원
  • 애노테이션을 통한 Mock 객체 생성 지원

Mockito를 이용한 모의 객체 생성

  • Mockito를 사용하면 외부 종속성이있는 클래스에 대한 테스트 개발이 크게 간소화됨

  • Mockito를 사용하는 경우 일반적으로 다음을 수행함

    1. 외부 의존성을 Mocking하고 모의 코드를 테스트중인 코드에 삽입
    2. 테스트중인 코드 실행
    3. 코드가 올바르게 실행되었는지 확인

Mockito Maven Dependency 

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.23.4</version>
    <scope>test</scope>
</dependency>

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글