Hola, estoy luchando con un problema simple.JUnit Método de prueba que usa otros métodos en el mismo objeto
idea general:
class Foo(){
public boolean method1();
public String method2();
public String method3();
public String shortcut(){
return (method1() == true) ? method2() : method3();
}
}
¿Cómo debería probar método de acceso directo?
Sé cómo simular objetos y métodos de prueba que usan otro objeto. Ejemplo:
class Car{
public boolean start(){};
public boolean stop(){};
public boolean drive(int km){};
}
class CarAutoPilot(){
public boolean hasGotExternalDevicesAttached(){
//Hardware specific func and api calls
//check if gps is available
//check if speaker is on
//check if display is on
}
public boolean drive(Car car, int km){
//drive
boolean found = hasGotExternalDevicesAttached();
boolean start = c.start();
boolean drive = c.drive(km);
boolean stop = c.stop();
return (found && start && drive && stop) == true;
}
}
class CarAutoPilotTest(){
@Test
public void shouldDriveTenKm(){
Car carMock = EasyMock.Create(Car.class);
EasyMock.expect(carMock.start()).andReturns(true);
EasyMock.expect(carMock.drive()).andReturns(true);
EasyMock.expect(carMock.stop()).andReturns(true);
EasyMock.reply(carMock);
CarAutoPilot cap = new CarAutoPilot();
boolean result = cap.drive(cap,10);
Assert.assertTrue(result);
EasyMock.verify(carMock);
}
}
Pero ¿qué pasa con hasGotExternalDevicesAttached() method? Este es solo un ejemplo de escenario no real. ¿Cómo debo probar el método de manejo? ¿Debería también simular la función hasGotExternalDevicesAttached?
¿Puedo simular la clase que se está probando?
1 para "Cómo debería probar el método duro?" Punny cosas. –