모키토

Mockito
모키토
개발자슈체판 파버, 브리스 두틸, 라파엘 윈터할터, 팀 반 데 리페 등.
안정된 릴리스
4.5.1 / 2022년 4월 21일, 2개월 전(2022-04-21)[1]
저장소github.com/mockito/mockito
기입처자바
유형테스트
면허증.MIT 라이선스[2]
웹 사이트site.mockito.org

MockitoMIT [3][4]라이선스에 따라 출시된 Java용 오픈 소스 테스트 프레임워크입니다.이 프레임워크에 의해 Test-Driven Development(TDD; 테스트 주도 개발) 또는 Behavior-Development(BDD; 행동 주도 개발)를 목적으로 자동 유닛 테스트에서 테스트 이중 객체(mock 객체)를 생성할 수 있습니다.

프레임워크의 이름과 로고는 음료의 일종인 모히토에 대한 놀이입니다.

특징들

Mockito는 개발자가 사전에 [5]기대치를 설정하지 않고 테스트 대상 시스템(SUT)의 동작을 검증할 수 있도록 합니다.모의 객체에 대한 비판 중 하나는 테스트 [6]대상 시스템에 테스트 코드가 밀접하게 결합되어 있다는 것입니다.모키토는, 기대의 명세서를 삭제해, 기대의 실행 검증 패턴을[7] 없애려고 한다.또한 Mockito는 보일러 플레이트 [8]코드를 줄이기 위한 주석을 제공합니다.

오리진스

Mockito는 EasyMock[9][10]구문과 기능을 확장하는 것으로 시작했다.

분리Hello 월드 프로그램을 고려해 보십시오.우리는 그 부품의 일부를 다른 부품의 모의 객체를 사용하여 유닛으로 테스트할 수 있습니다.

패키지 org.module (조직.module);  수입품 java.io 를 참조해 주세요.IOException(IOException);  일반의 학급 Hello 어플리케이션 {     일반의 정적인 인터페이스 인사말 {       스트링 인사말(스트링 주제);       스트링 개요의 취득(스트링 배우.);    }        일반의 정적인 학급 헬로그리터 용구 인사말 {       사적인 스트링 안녕;       사적인 스트링 세그먼트;              일반의 헬로그리터(스트링 안녕, 스트링 세그먼트) {          이것..안녕 = 안녕;          이것..세그먼트 = 세그먼트;       }       일반의 스트링 인사말(스트링 주제) {          돌아가다 안녕 + " " + 주제;        }       일반의 스트링 개요의 취득(스트링 배우.) {          돌아가다 배우.+세그먼트;       }    }        일반의 정적인 인터페이스 Hello Actable (HelloActable {       무효 안부 전해주세요.(스트링 배우., 스트링 주제) 던지다 IOException(IOException);    }        일반의 정적인 학급 Hello Action(헬로 액션) 용구 Hello Actable (HelloActable {       사적인 인사말 헬로그리터;       사적인 추가 가능 helloWriter;        일반의 Hello Action(헬로 액션)(인사말 헬로그리터, 추가 가능 helloWriter) {          잘 하는 군요();          이것..헬로그리터 = 헬로그리터;          이것..helloWriter = helloWriter;       }       일반의 무효 안부 전해주세요.(스트링 배우., 스트링 주제) 던지다 IOException(IOException) {           helloWriter.추가하다(헬로그리터.개요의 취득(배우.)).추가하다(헬로그리터.인사말(주제));       }    }     일반의 정적인 무효 주된(스트링... args) 던지다 IOException(IOException) {       신규 Hello Action(헬로 액션)(신규 헬로그리터("안녕하세요", ": "), 시스템..나가.).안부 전해주세요.("응용 프로그램", "세계");    }  } 

Hello Application 부팅 결과는 다음과 같습니다.

응용 프로그램: hello world

HelloActable 컴포넌트의 유닛테스트는 다음과 같습니다.

패키지 org.module (조직.module);  Import 스태틱 org.syslogito.Matchers.임의; Import 스태틱 org.syslogito.매처스; Import 스태틱 org.syslogito.모키토.모의; Import 스태틱 org.syslogito.모키토.시대; Import 스태틱 org.syslogito.모키토.확인하다; Import 스태틱 org.syslogito.모키토.언제;  수입품 org.junit.전에; 수입품 org.junit.시험;  수입품 org.module을 클릭합니다.Hello 어플리케이션Hello Actable (HelloActable; 수입품 org.module을 클릭합니다.Hello 어플리케이션Hello Action(헬로 액션); 수입품 org.module을 클릭합니다.Hello 어플리케이션인사말;  일반의 학급 Hello Action Unit 테스트 {        인사말 헬로그리터목;    추가 가능 HelloWriterMock;    Hello Actable (HelloActable hello 액션;        @전    일반의 무효 세우다() {       헬로그리터목 = 모의(인사말.학급);       HelloWriterMock = 모의(추가 가능.학급);       hello 액션 = 신규 Hello Action(헬로 액션)(헬로그리터목, HelloWriterMock);    }        @테스트    일반의 무효 테스트 Say Hello() 던지다 예외. {       언제(HelloWriterMock.추가하다(조금도(스트링.학급))).그러면 되돌아가다(HelloWriterMock);       언제(헬로그리터목.개요의 취득(이큐("유닛 테스트"))).그러면 되돌아가다("유닛 테스트: ");       언제(헬로그리터목.인사말(이큐("세계"))).그러면 되돌아가다("하이월드");              hello 액션.안부 전해주세요.("유닛 테스트", "세계");              확인하다(헬로그리터목).개요의 취득(이큐("유닛 테스트"));       확인하다(헬로그리터목).인사말(이큐("세계"));        확인하다(HelloWriterMock, 시대(2)).추가하다(조금도(스트링.학급));       확인하다(HelloWriterMock, 시대(1)).추가하다(이큐("유닛 테스트: "));       확인하다(HelloWriterMock, 시대(1)).추가하다(이큐("하이월드"));    } } 

Greeter 및 Adpendable 인터페이스에 대해 모의 개체를 사용하고 다음 사용 사례를 암묵적으로 가정합니다.

unitTest : 하이월드

Greeter와 함께 연결된 HelloActable을 테스트하기 위한 통합 테스트 코드는 다음과 같습니다.

패키지 org.module (조직.module);  Import 스태틱 org.syslogito.Matchers.임의; Import 스태틱 org.syslogito.매처스; Import 스태틱 org.syslogito.모키토.모의; Import 스태틱 org.syslogito.모키토.시대; Import 스태틱 org.syslogito.모키토.확인하다; Import 스태틱 org.syslogito.모키토.언제;  수입품 org.junit.전에; 수입품 org.junit.시험;  수입품 org.module을 클릭합니다.Hello 어플리케이션Hello Actable (HelloActable; 수입품 org.module을 클릭합니다.Hello 어플리케이션Hello Action(헬로 액션); 수입품 org.module을 클릭합니다.Hello 어플리케이션인사말; 수입품 org.module을 클릭합니다.Hello 어플리케이션헬로그리터;  일반의 학급 Hello Action(헬로 액션)통합시험 {    Hello Actable (HelloActable hello 액션;    인사말 헬로그리터;    추가 가능 HelloWriterMock;        @전    일반의 무효 세우다() {       헬로그리터 = 신규 헬로그리터("어서 오세요", " 라고 말한다.);       HelloWriterMock = 모의(추가 가능.학급);       hello 액션 = 신규 Hello Action(헬로 액션)(헬로그리터, HelloWriterMock);    }        @테스트    일반의 무효 테스트 Say Hello() 던지다 예외. {       언제(HelloWriterMock.추가하다(조금도(스트링.학급))).그러면 되돌아가다(HelloWriterMock);        hello 액션.안부 전해주세요.("연동 테스트", "실패");        확인하다(HelloWriterMock, 시대(2)).추가하다(조금도(스트링.학급));       확인하다(HelloWriterMock, 시대(1)).추가하다(이큐("통합테스트 결과 "));       확인하다(HelloWriterMock, 시대(1)).추가하다(이큐("웰컴 유니버스"));    } } 

Adpendable 인터페이스 대신 모의 객체만 사용하고 다른 (HelloActable 및 Greeter)인터페이스에 실제 실장을 사용하여 암묵적으로 다음 사용 사례를 상정합니다.

통합테스트에서 웰컴 유니버스라고 합니다.

이는 HelloActionUnitTest 및 HelloAction의 Import문에서 알 수 있습니다.통합테스트 클래스에서는 테스트 클래스를 컴파일 및 실행할 수 있도록 클래스 경로에 Mockito jar와 JUnit jar를 추가해야 합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Project Releases Overview on GitHub". Retrieved 29 April 2022.
  2. ^ "License · mockito/mockito Wiki · GitHub". Retrieved 30 August 2019.
  3. ^ "Mockito in six easy examples". 2009. Retrieved 2012-10-05.
  4. ^ "What's the best mock framework for Java?". Retrieved 2010-12-29.
  5. ^ "Features and Motivations". Retrieved 2010-12-29.
  6. ^ Fowler, Martin (2007). "Mocks Aren't Stubs". Retrieved 2010-12-29.
  7. ^ Faber, Szczepan. "Death Wish". Retrieved 2010-12-29.
  8. ^ Kaczanowski, Tomek. "Mockito - Open Source Java Mocking Framework". Retrieved 2013-09-17.
  9. ^ Faber, Szczepan. "Mockito". Retrieved 2010-12-29.
  10. ^ "Mockito Home Page". Retrieved 2010-12-29.

외부 링크