package org.orienteer.junit;
import java.util.List;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.InitializationError;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.Provider;
public class GuiceTestRunner extends BlockJUnit4ClassRunner
{
private final Provider<Injector> injectorProvider;
public GuiceTestRunner(final Class<?> classToRun,
Provider<Injector> injectorProvider) throws InitializationError
{
super(classToRun);
this.injectorProvider = injectorProvider;
}
@Override
public Object createTest() {
return getInjector().getInstance(getTestClass().getJavaClass());
}
@Override
protected void validateZeroArgConstructor(List<Throwable> errors) {
// Guice can inject constructors with parameters so we don't want this
// method to trigger an error
}
protected Injector getInjector() {
return injectorProvider.get();
}
}