Для издевательства я бы предложил powermock . Благодаря автоматически генерируемым прокси-серверам он может делать практически все, что вы можете себе представить, начиная с создания имитаций из интерфейсов, заканчивая перехватом инициализации и заканчивая подавлением статической инициализации (единственное, что меня поразило, это шутка с макетом java.lang.Object
).
Допустим, SessionFacadeTest
- это ваш набор тестов JUnit для 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();
}
}
(Примечание: я написал здесь, так что может даже не скомпилировать, но даст вам идею).