Font Size

SCREEN

Profile

Layout

Direction

Menu Style

Cpanel

Aninki Code

EasyMock


EasyMock es un framework testeo de mocks. Permite escribir pruebas con una API simple.

+ INFO

EasyMock- Indice contenidos

 Hay que tener en cuenta que EasyMock tiene limitaciones que son las siguiente:
 
  • No se puede hacer mock que métodos finales
  • No se puede hacer mock de métodos privados
  • Nose puede hacer mock de los métodos  equals(), toString() y hashCode().
 
 
 
 

 

EasyMock- Introduccion

Básicamente, lo que hace el framework es marcar las llamadas que vamos a realizar contra los mock y luego comprueba que las llamadas a los servicios reales son las mimas. Luego el proceso es,
  1. crear el mock
  2. crear las expectativas,
  3. ejecutar los métodos reales
  4. comprobar que los resultados son los mismos.

Para definir las expectativas, definiremos las expectativas esperadas:

EasyMock.expect(icursoMock.getNombre()).andReturn("Lucas");

Guardamos el estado para poder luego comparar los resultados:

//guardo el estado
EasyMock.replay(icursoMock);

Ejecutamos las llamadas reales:

//ejecuto la llamda real
 icursoMock.getNombre();

Comprobamos si lo ejecutado es lo mismo que lo grabado:

//compruebo que se ha cumplido
   EasyMock.verify(icursoMock);

Easy mock nos permite defiir expectavas de que se repita varias veces, que por lo menos se llame a un mock...

	EasyMock.expect(icursoMock.getNombre()).andReturn("Lucas")
    	//espero entre 1 y 3 llamadas
    	.times(1,3);////esepro por lo menos una llamada
    				////.atLeastOnce(); por lo menos una vez
    				//////anyTimes(); Cualquier numero de veces

Tambien podemos definir que el resultado esperado es una excepción mediante la anotación  @Test (expected=NullPointerException.class) antes del método.

 

Ejemplo completo

package com.anininkinet.easymock;

import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;

import com.anininkinet.easymock.vo.CursoVo;
import com.anininkinet.easymock.vo.ICurso;

public class TestEasyMock {

	
    
    private ICurso icursoMock;
    private ICurso iCurso;
    
    @Before
    public void setUp() {
    	iCurso=new CursoVo();
    }

    @Test
    public void testRemoveNonExistingDocument() {    
    	icursoMock = EasyMock.createMock(ICurso.class);
    	
    	EasyMock.expect(icursoMock.getNombre()).andReturn("Lucas");
    	//guardo el estado
    	EasyMock.replay(icursoMock);
    	//ejecuto la llamda real
    	icursoMock.getNombre();
    	//compruebo que se ha cumplido
    	EasyMock.verify(icursoMock);
    	
    	EasyMock.reset(icursoMock);
       	
    	
    }
    @Test
    public void testRepetirLLamadat() {    
    	icursoMock = EasyMock.createMock(ICurso.class);
    	
    	EasyMock.expect(icursoMock.getNombre()).andReturn("Lucas").times(2);
    	//guardo el estado
    	EasyMock.replay(icursoMock);
    	//ejecuto la llamda real
    	icursoMock.getNombre();
    	icursoMock.getNombre();
    	//compruebo que se ha cumplido
    	EasyMock.verify(icursoMock);
    	
    	EasyMock.reset(icursoMock);      	
    	
    }
    
    @Test
    public void testRepetirLLamadas() {    
    	icursoMock = EasyMock.createMock(ICurso.class);
    	
    	EasyMock.expect(icursoMock.getNombre()).andReturn("Lucas")
    	//espero entre 1 y 3 llamadas
    	.times(1,3);////esepro por lo menos una llamada
    				////.atLeastOnce(); por lo menos una vez
    				//////anyTimes(); Cualquier numero de veces
    	//guardo el estado
    	EasyMock.replay(icursoMock);
    	//ejecuto la llamda real
    	icursoMock.getNombre();
    	//icursoMock.getNombre();
    	//compruebo que se ha cumplido
    	EasyMock.verify(icursoMock);
    	
    	EasyMock.reset(icursoMock);      	
    	
    }

  
    @Test (expected=NullPointerException.class)
    public void testException() {    
    	icursoMock = EasyMock.createMock(ICurso.class);
    	
    	EasyMock.expect(icursoMock.getId()).andThrow(new NullPointerException());
    	EasyMock.replay(icursoMock);
    	//ejecuto la llamda real
    	icursoMock.getId();
    	//icursoMock.getNombre();
    	//compruebo que se ha cumplido
    	//EasyMock.verify(icursoMock);
    	
    	//EasyMock.reset(icursoMock);      	
    	
    }
}