package krasa.easymock;
import static org.easymock.EasyMock.*;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
public class EasyMockTest {
private List<Object> mocks = new ArrayList<Object>();
@Before
public void setUp() throws Exception {
List<Field> mockFields = MockAnnotationUtil.findFieldsThatAreMarkedForMocking(this);
makeFieldsAccessibleForMocking(mockFields);
defineMocks(mockFields, this);
}
@After
public void tearDown() throws Exception {
verify(mocks.toArray());
}
public void replayAll() {
replay(mocks.toArray());
}
private void defineMocks(List<Field> mockedFields, Object testInstance) throws Exception {
for (Field field : mockedFields) {
String fieldName = field.getName();
Class<?> type = field.getType();
Object mock = createMock(fieldName, type);
mocks.add(mock);
field.set(testInstance, mock);
}
}
private void makeFieldsAccessibleForMocking(List<Field> mockFields) {
for (Field f : mockFields) {
f.setAccessible(true);
}
}
}