EasyMock - Genel Bakış
Alay etmek nedir?
Alay etmek, bir sınıfın işlevselliğini tek başına test etmenin bir yoludur. Mocking, bir işlevi test etmek için bir veritabanı bağlantısı veya özellikler dosyası okuması veya dosya sunucusu okuması gerektirmez. Sahte nesneler gerçek hizmetle alay eder. Sahte bir nesne, kendisine geçirilen bazı sahte girdilere karşılık gelen sahte bir veri döndürür.
EasyMock
EasyMock, sahte nesnelerin sorunsuz bir şekilde oluşturulmasını kolaylaştırır. Belirli bir arayüz için sahte nesneler oluşturmak için Java Yansımasını kullanır. Sahte nesneler, gerçek uygulamalar için vekildir. Bir hisse senedinin fiyat ayrıntılarını döndüren bir Stok Hizmeti durumu düşünün. Geliştirme sırasında gerçek stok hizmeti gerçek zamanlı veri almak için kullanılamaz. Bu nedenle stok hizmetinin sahte bir şekilde uygulanmasına ihtiyacımız var. EasyMock, adından da anlaşılacağı gibi aynı şeyi çok kolay bir şekilde yapabilir.
EasyMock'un Faydaları
No Handwriting - Kendi başınıza sahte nesneler yazmanıza gerek yok.
Refactoring Safe - Arayüz yöntemi adlarını yeniden adlandırmak veya parametreleri yeniden sıralamak, Mock'lar çalışma zamanında oluşturulduğundan test kodunu bozmaz.
Return value support - Dönüş değerlerini destekler.
Exception support - İstisnaları destekler.
Order check support - Yöntem çağrılarının sırasını kontrol etmeyi destekler.
Annotation support - Ek açıklama kullanarak örnek oluşturmayı destekler.
Aşağıdaki kod parçacığını düşünün.
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.