Para burlarse, sugiero powermock. Gracias a los proxies generados automáticamente, puede hacer prácticamente cualquier cosa que puedas imaginar, comenzando con la creación de simulacros desde interfaces, interceptando el final de inicialización con la supresión de la inicialización estática (lo único que me golpeó fue jugar con java.lang.Object
burlándose).
Digamos que SessionFacadeTest
es su conjunto de pruebas JUnit para SeesionFacade
.
import static org.powermock.api.easymock.PowerMock.createMock;
import static org.powermock.api.easymock.PowerMock.replayAll;
import static org.powermock.api.easymock.PowerMock.verifyAll;
import static org.easymock.EasyMock.anyObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import javax.persistence.EntityManager;
@RunWith(PowerMockRunner.class)
@PrepareForTest({SessionFacade.class})
public class SessionFacadeTest {
@Test public void persistingObject() {
//set up stage
SessionFacade fixture = new SessionFacade();
EntityManager managerMock = createMock(EntityManager.class);
fixture.setManager(managerMock);
//record expected behavior
managerMock.persist(anyObject());
//testing stage
replayAll();
fixture.anyMethodThatCallPersist();
//asserting stage
verifyAll();
}
}
(Nota: Lo escribí aquí, por lo que puede incluso no compilar, pero le dará la idea).
Dice página no encontrada, tal vez de actualizar su respuesta :) – cgew85
gracias. actualizado el enlace. –