goodbye

Mokito 본문

Test

Mokito

goodbye 2022. 12. 15. 11:45

Mock


  • Mock: 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체.
  • Mockito: Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공한다.
  • 현재 최신 버전 3.1.0
    • https://site.mockito.org

 

 

Mockito Setting


  • 스프링 부트 2.2+ 프로젝트 생성시 spring-boot-starter-test에서 자동으로 Mockito 추가
  • Dependency setting
<dependency>     <groupId>org.mockito</groupId>     <artifactId>mockito-core</artifactId>     <version>3.1.0</version>     <scope>test</scope> </dependency>   <dependency>     <groupId>org.mockito</groupId>     <artifactId>mockito-junit-jupiter</artifactId>     <version>3.1.0</version>     <scope>test</scope> </dependency>

 

 

Mockito 객체 생성


  • assert : 자바 키워드
    • 값 검증 → exeption 발생 → AssertException 발생

 

  1. Mokito.mock() 메서드로 만드는 방법

 

  1. @Mock 애노테이션으로 만드는 방법 : JUnit5 Extension MockitoException 사용
    1. mock 메서드
    1. 필드 선언
    1. 메소드 매개변수

    • 위 3가지 방법 모두 mock 객체 생성에 성공한다

Mock 객체 Stubbing


  • 모든 Mock 객체의 행동
    • Null을 리턴한다. (Optional 타입은 Optional.empty 리턴)
    • Primitive 타입은 기본 Primitive 값.
    • 콜렉션은 비어있는 콜렉션.
    • Void 메소드는 예외를 던지지 않고 아무런 일도 발생하지 않는다.

 

 

 

 

Mock 객체 확인


 

 

Mockito BDD Style API-


BDD (Behaviour-Driven Development)
  • BDD는 시나리오를 기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않는다. 이 시나리오는 개발자가 아닌 사람이 봐도 이해할 수 있을 정도의 레벨을 권장한다. 하나의 시나리오는 Given, When, Then 구조를 가지는 것을 기본 패턴으로 권장하며 각 절의 의미는 다음과 같다.
    • Feature : 테스트에 대상의 기능/책임을 명시한다.
    • Scenario : 테스트 목적에 대한 상황을 설명한다.
    • Given : 시나리오 진행에 필요한 값을 설정한다.
    • When : 시나리오를 진행하는데 필요한 조건을 명시한다.
    • Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시한다.
  • 테스트 대상은 A 상태에서 출발하며(Given) 어떤 상태 변화를 가했을 때(When) 기대하는 상태로 완료되어야 한다. (Then)
  • 또는 Side Effect가 전혀 없는 테스트 대상이라면 테스트 대상의 환경을 A 상태에 두고(Given) 어떤 행동을 요구했을 때(When) 기대하는 결과를 돌려받아야 한다. (Then)

 

 


'Test' 카테고리의 다른 글

JUnit5  (0) 2022.12.11
Comments