Mockito-개요
조롱이란 무엇입니까?
모킹은 클래스의 기능을 격리하여 테스트하는 방법입니다. 모킹에는 기능을 테스트하기 위해 데이터베이스 연결이나 속성 파일 읽기 또는 파일 서버 읽기가 필요하지 않습니다. 모의 객체는 실제 서비스를 조롱합니다. 모의 객체는 전달 된 더미 입력에 해당하는 더미 데이터를 반환합니다.
Mockito
Mockito는 모의 객체를 원활하게 생성 할 수 있도록합니다. 주어진 인터페이스에 대한 모의 객체를 생성하기 위해 Java Reflection을 사용합니다. 모의 객체는 실제 구현을위한 프록시 일뿐입니다.
주식의 가격 정보를 반환하는 Stock Service의 경우를 고려하십시오. 개발 중에는 실제 재고 서비스를 사용하여 실시간 데이터를 얻을 수 없습니다. 따라서 우리는 주식 서비스의 더미 구현이 필요합니다. Mockito는 이름에서 알 수 있듯이 매우 쉽게 똑같이 할 수 있습니다.
Mockito의 장점
No Handwriting − 모의 개체를 직접 작성할 필요가 없습니다.
Refactoring Safe − 인터페이스 메서드 이름을 바꾸거나 매개 변수를 재정렬해도 Mocks가 런타임에 생성되므로 테스트 코드가 깨지지 않습니다.
Return value support − 반환 값을 지원합니다.
Exception support − 예외를 지원합니다.
Order check support − 메서드 호출 순서 확인을 지원합니다.
Annotation support − 주석을 사용하여 모의 생성을 지원합니다.
다음 코드 스 니펫을 고려하십시오.
package com.tutorialspoint.mock;
import java.util.ArrayList;
import java.util.List;
import static org.mockito.Mockito.*;
public class PortfolioTester {
public static void main(String[] args){
//Create a portfolio object which is to be tested
Portfolio portfolio = new Portfolio();
//Creates a list of stocks to be added to the portfolio
List<Stock> stocks = new ArrayList<Stock>();
Stock googleStock = new Stock("1","Google", 10);
Stock microsoftStock = new Stock("2","Microsoft",100);
stocks.add(googleStock);
stocks.add(microsoftStock);
//Create the mock object of stock service
StockService stockServiceMock = mock(StockService.class);
// mock the behavior of stock service to return the value of various stocks
when(stockServiceMock.getPrice(googleStock)).thenReturn(50.00);
when(stockServiceMock.getPrice(microsoftStock)).thenReturn(1000.00);
//add stocks to the portfolio
portfolio.setStocks(stocks);
//set the stockService to the portfolio
portfolio.setStockService(stockServiceMock);
double marketValue = portfolio.getMarketValue();
//verify the market value to be
//10*50.00 + 100* 1000.00 = 500.00 + 100000.00 = 100500
System.out.println("Market value of the portfolio: "+ marketValue);
}
}
위 프로그램의 중요한 개념을 이해합시다. 전체 코드는 장에서 사용할 수 있습니다.First Application.
Portfolio − 주식 목록을 운반하고 주가 및 재고 수량을 사용하여 계산 된 시장 가치를 얻는 객체.
Stock − ID, 이름, 수량 등과 같은 주식의 세부 정보를 전달하는 개체.
StockService − 주식 서비스는 주식의 현재 가격을 반환합니다.
mock(...) − Mockito는 모의 주식 서비스를 만들었습니다.
when(...).thenReturn(...)− stockService 인터페이스의 getPrice 메소드 모의 구현. googleStock의 경우 가격으로 50.00을 반환합니다.
portfolio.setStocks(...) − 이제 포트폴리오에 두 개의 주식 목록이 포함됩니다.
portfolio.setStockService(...) − 포트폴리오에 stockService Mock 객체를 할당합니다.
portfolio.getMarketValue() − 포트폴리오는 모의 주식 서비스를 사용하여 주식을 기준으로 시장 가치를 반환합니다.