package com.pivotallabs.injected;
import android.app.Application;
import com.google.inject.Injector;
import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.RobolectricTestRunner;
import org.junit.runners.model.InitializationError;
import roboguice.inject.ContextScope;
public class InjectedTestRunner extends RobolectricTestRunner {
public InjectedTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
}
@Override protected Application createApplication() {
SampleGuiceApplication application = (SampleGuiceApplication)super.createApplication();
application.setModule(new RobolectricSampleTestModule());
return application;
}
@Override public void prepareTest(Object test) {
SampleGuiceApplication application = (SampleGuiceApplication) Robolectric.application;
//This project's application does not extend GuiceInjectableApplication therefore we need to enter the ContextScope manually.
Injector injector = application.getInjector();
ContextScope scope = injector.getInstance(ContextScope.class);
scope.enter(application);
injector.injectMembers(test);
}
}