모키토
Mockito![]() | 이 기사는 대부분의 독자들이 이해하기에는 너무 전문적일 수 있다.. (2010년 2월 (이 의 에 대해 합니다) 세부사항을 할 수 해 |
개발자 | 슈체판 파버, 브리스 두틸, 라파엘 윈터할터, 팀 반 데 리페 등. |
---|---|
안정된 릴리스 | 4.5.1 / 2022년 4월 [1] , 전( |
저장소 | github |
기입처 | 자바 |
유형 | 테스트 |
면허증. | MIT 라이선스[2] |
웹 사이트 | site |
Mockito는 MIT [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를 추가해야 합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Project Releases Overview on GitHub". Retrieved 29 April 2022.
- ^ "License · mockito/mockito Wiki · GitHub". Retrieved 30 August 2019.
- ^ "Mockito in six easy examples". 2009. Retrieved 2012-10-05.
- ^ "What's the best mock framework for Java?". Retrieved 2010-12-29.
- ^ "Features and Motivations". Retrieved 2010-12-29.
- ^ Fowler, Martin (2007). "Mocks Aren't Stubs". Retrieved 2010-12-29.
- ^ Faber, Szczepan. "Death Wish". Retrieved 2010-12-29.
- ^ Kaczanowski, Tomek. "Mockito - Open Source Java Mocking Framework". Retrieved 2013-09-17.
- ^ Faber, Szczepan. "Mockito". Retrieved 2010-12-29.
- ^ "Mockito Home Page". Retrieved 2010-12-29.