开发手册 欢迎您!
软件开发者资料库

Mockito - 第一个应用程序

Mockito第一个应用程序 - 从概述,环境设置,第一个应用程序,JUnit集成,添加行为,验证行为,期待呼叫,变化调用,异常处理,创建模拟,有序验证,回调,间谍,重置,从简单而简单的步骤学习Mockito模拟,行为驱动开发,超时。

在进入Mockito框架的详细信息之前,让我们看一下应用程序的运行情况.在这个例子中,我们已经创建了一个模拟股票服务以获得一些股票的虚拟价格,并且单元测试了一个名为Portfolio的java类.

下面将在步骤中讨论该过程 - 分步方式.

第1步和第2步;创建一个JAVA类来表示股票

文件:Stock.java

public class Stock {   private String stockId;   private String name;   private int quantity;   public Stock(String stockId, String name, int quantity){      this.stockId = stockId;      this.name = name;      this.quantity = quantity;   }   public String getStockId() {      return stockId;   }   public void setStockId(String stockId) {      this.stockId = stockId;   }   public int getQuantity() {      return quantity;   }   public String getTicker() {      return name;   }}

第2步去;创建一个接口StockService以获取股票的价格

文件:StockService.java

public interface StockService {   public double getPrice(Stock stock);}

第3步和第3步;创建一个类组合来表示任何客户的投资组合

文件:Portfolio.java

import java.util.List; public class Portfolio {   private StockService stockService;   private List stocks;   public StockService getStockService() {      return stockService;   }      public void setStockService(StockService stockService) {      this.stockService = stockService;   }   public List getStocks() {      return stocks;   }   public void setStocks(List stocks) {      this.stocks = stocks;   }   public double getMarketValue(){      double marketValue = 0.0;            for(Stock stock:stocks){         marketValue += stockService.getPrice(stock) * stock.getQuantity();      }      return marketValue;   }}

第4步去;测试投资组合类

让我们测试一下投资组合类,在其中注入一个模拟的股票服务.模拟将由Mockito创建.

文件:PortfolioTester.java

package com.it1352.mock; import java.util.ArrayList;import java.util.List;import static org.mockito.Mockito.*;public class PortfolioTester {   Portfolio portfolio;   StockService stockService;         public static void main(String[] args){      PortfolioTester tester = new PortfolioTester();      tester.setUp();      System.out.println(tester.testMarketValue()?"pass":"fail");   }      public void setUp(){      //Create a portfolio object which is to be tested      portfolio = new Portfolio();        //Create the mock object of stock service      stockService = mock(StockService.class);        //set the stockService to the portfolio      portfolio.setStockService(stockService);   }      public boolean testMarketValue(){             //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);      //add stocks to the portfolio      portfolio.setStocks(stocks);      //mock the behavior of stock service to return the value of various stocks      when(stockService.getPrice(googleStock)).thenReturn(50.00);      when(stockService.getPrice(microsoftStock)).thenReturn(1000.00);      double marketValue = portfolio.getMarketValue();      return marketValue == 100500.0;   }}

第5步去;验证结果

使用 javac 编译器编译类如下 :

C:\ Mockito_WORKSPACE> javac Stock.java StockService.java Portfolio.java PortfolioTester.java

现在运行PortfolioTester查看结果 :

C:\ Mockito_WORKSPACE> java PortfolioTester

验证输出

pass