EasyMock es una libreria muy util para hacer pruebas unitarias con JUnit. Nos sirve para crear cualquier objeto fantasma (mock) y hacer que devuelva un resultado concreto para una entrada concreta.
Ejemplo de test
import junit.framework.TestCase;
import org.easymock.EasyMock;
public class AutoTest extends TestCase{
private Fabrica fabrica;
@Override
protected void setUp() throws Exception {
super.setUp();
fabrica = EasyMock.createMock(Fabrica.class);
Motor motorFerrari = new MotorImpl(2500);
Ferrari ferrari = new Ferrari();
ferrari.setMotor(motorFerrari);
EasyMock.expect(fabrica.getFerrari()).andReturn(ferrari).times(5);
Motor motorPorche = new MotorImpl(1000);
Porche porche = new Porche();
porche.setMotor(motorPorche);
EasyMock.expect(fabrica.getPorche()).andReturn(porche).times(5);
EasyMock.replay(fabrica);
}
public void testCilindrada() {
Automovil porche = fabrica.getPorche();
Motor motorPorche = porche.getMotor();
assertEquals(motorPorche.getCilindrada(), 1000);
Automovil ferrari = fabrica.getFerrari();
Motor motorFerrari = ferrari.getMotor();
assertTrue(motorFerrari.getCilindrada() > motorPorche.getCilindrada());
}
}
Interfaz fábrica
public interface Fabrica {
Automovil getPorche();
Automovil getFerrari();
}
Clase Auto
public abstract class Auto {
private Motor motor;
public Motor getMotor() {
return this.motor;
}
public void setMotor(Motor motor) {
this.motor = motor;
}
}
Interfaz Automovil
public interface Automovil {
public Motor getMotor();
}
Clase Ferrari
public class Ferrari extends Auto implements Automovil { }
Clase Porche
public class Porche extends Auto implements Automovil { }
Interfaz Motor
public interface Motor {
public int getCilindrada();
}
Clase Motor
public class MotorImpl implements Motor {
private int cilindrada;
public MotorImpl(int cilindrada) {
this.cilindrada = cilindrada;
}
public int getCilindrada() {
return this.cilindrada;
}
}
sábado, 26 de enero de 2008
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario