EasyMock-개요

조롱이란 무엇입니까?

모킹은 클래스의 기능을 격리하여 테스트하는 방법입니다. 모킹에는 기능을 테스트하기 위해 데이터베이스 연결이나 속성 파일 읽기 또는 파일 서버 읽기가 필요하지 않습니다. 모의 객체는 실제 서비스를 조롱합니다. 모의 객체는 전달 된 더미 입력에 해당하는 더미 데이터를 반환합니다.

EasyMock

EasyMock은 모의 객체를 원활하게 생성 할 수 있도록합니다. 주어진 인터페이스에 대한 모의 객체를 생성하기 위해 Java Reflection을 사용합니다. 모의 객체는 실제 구현을위한 프록시 일뿐입니다. 주식의 가격 정보를 반환하는 Stock Service의 경우를 고려하십시오. 개발 중에는 실제 재고 서비스를 사용하여 실시간 데이터를 얻을 수 없습니다. 따라서 우리는 주식 서비스의 더미 구현이 필요합니다. EasyMock은 이름에서 알 수 있듯이 매우 쉽게 똑같이 할 수 있습니다.

EasyMock의 장점

  • 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 org.EasyMock.EasyMock;

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
      
        stocks = new ArrayList
       
        (); 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 = EasyMock.createMock(StockService.class); // mock the behavior of stock service to return the value of various stocks EasyMock.expect(stockServiceMock.getPrice(googleStock)).andReturn(50.00); EasyMock.expect(stockServiceMock.getPrice(microsoftStock)).andReturn(1000.00); EasyMock.replay(stockServiceMock); //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); } } 
       
      

Let's understand the important concepts of the above program. The complete code is available in the chapter First Application.

  • Portfolio – An object to carry a list of stocks and to get the market value computed using stock prices and stock quantity.

  • Stock – An object to carry the details of a stock such as its id, name, quantity, etc.

  • StockService – A stock service returns the current price of a stock.

  • EasyMock.createMock(...) – EasyMock created a mock of stock service.

  • EasyMock.expect(...).andReturn(...) – Mock implementation of getPrice method of stockService interface. For googleStock, return 50.00 as price.

  • EasyMock.replay(...) – EasyMock prepares the Mock object to be ready so that it can be used for testing.

  • portfolio.setStocks(...) – The portfolio now contains a list of two stocks.

  • portfolio.setStockService(...) - Assigns the stockService Mock object to the portfolio.

  • portfolio.getMarketValue() – The portfolio returns the market value based on its stocks using the mock stock service.