package com.googlecode.gwt.test.csv.internal;
import com.googlecode.gwt.test.internal.GwtConfig;
import com.googlecode.gwt.test.internal.junit.GwtRunListener;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;
import org.junit.runner.notification.RunNotifier;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class GwtSpring3CsvJUnit4ClassRunner extends SpringJUnit4ClassRunner {
private DirectoryTestReader reader;
public GwtSpring3CsvJUnit4ClassRunner(Class<?> klass) throws InitializationError,
ClassNotFoundException {
super(klass);
}
@Override
public void run(RunNotifier notifier) {
notifier.addListener(new GwtRunListener());
GwtConfig.get().setupGwtModule(getTestClass().getJavaClass());
super.run(notifier);
}
@Override
protected List<FrameworkMethod> computeTestMethods() {
if (reader == null) {
reader = new DirectoryTestReader(getTestClass().getJavaClass());
}
List<FrameworkMethod> frameworkMethods = new ArrayList<FrameworkMethod>();
for (Method csvMethod : reader.getTestMethods()) {
frameworkMethods.add(new FrameworkMethod(csvMethod));
}
return frameworkMethods;
}
@Override
protected Object createTest() throws Exception {
Object testInstance = reader.createObject();
GwtReflectionUtils.callPrivateMethod(testInstance, "setReader", reader);
getTestContextManager().prepareTestInstance(testInstance);
return testInstance;
}
}