package org.orienteer.junit;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import com.google.inject.Injector;
import com.google.inject.Provider;
public class GuiceRule implements MethodRule
{
private final Provider<Injector> injectorProvider;
public GuiceRule(Provider<Injector> injectorProvider)
{
this.injectorProvider = injectorProvider;
}
@Override
public Statement apply(final Statement base, final FrameworkMethod method, final Object target) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
Injector injector = injectorProvider.get();
injector.injectMembers(target);
base.evaluate();
}
};
}
}