(译) 02-Mockito-概览

x33g5p2x  于2021-12-28 转载在 其他  
字(2.0k)|赞(0)|评价(0)|浏览(281)

Mockito-概述

Mockito是什么?

Mockito是一种隔离功能类的测试方法。Mockito不需要数据库连接或属性文件读取或文件服务器读取来测试功能。模拟对象做真实服务,模拟对象返回与传递给它的一些虚拟输入对应的虚拟数据。

Mockito

Mockito 方便、无缝地创建模拟对象。它使用 Java 反射为给定的接口创建模拟对象。模拟对象只不过是实际实现的代理。

假定一个股票服务的案例, 它返回股票的价格细节。在开发过程中, 实际的库存服务不能用于获取实时数据。所以我们需要一个虚拟的股票服务的实现。Mockito 也可以很容易地做到。

Mockito 的好处

  • 无手写−不需要自己编写模拟对象。
  • 重构安全−重命名接口方法名称或重新排序参数不会破坏测试代码, 因为在运行时会创建Mocks。
  • 返回值支持−支持返回值。
  • 异常支持−支持异常。
  • 订单检查支持−支持检查方法调用的顺序。
  • 注解支持−支持使用注解创建Mocks。

请参考下面的代码段。

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);
   }
}

让我们了解一下上述程序的重要概念。完整代码可在第一个应用程序.

  • Portfolio−一个对象, 用于携带股票列表, 并使用股票价格和库存量计算市场价值。
  • Stock−一个对象, 用于执行股票的详细信息, 如其 id、名称、数量等。
  • StockService −股票服务返回股票的当前价格。
  • mock(...)− Mockito 创建了股票服务的模拟。
  • when(...).thenReturn(...) stockService 接口 getPrice 方法的模拟实现。对于 googleStock, 返回50.00 作为价格。
  • portfolio.setStocks(...)−投资组合现在包含两个股票的清单。
  • portfolio.setStockService(...) −将 stockService 模拟对象分配给portfolio。
  • portfolio.getMarketValue()  −portfolio根据其股票使用模拟股票服务返回市场价值。

翻译自:https://www.tutorialspoint.com/mockito/mockito_overview.htm

相关文章