/**
* Copyright 2011 Marcin Mikosik
* All rights reserved.
*/
package com.perunlabs.testinjector.inject;
import static com.google.inject.Guice.createInjector;
import static com.perunlabs.testinjector.inject.Preconditions.checkPreconditions;
import java.util.ArrayList;
import org.mockito.MockitoAnnotations;
import com.google.inject.Module;
import com.perunlabs.testinjector.bind.BindingModule;
import com.perunlabs.testinjector.bind.FieldBindingsCollector;
public class TestInjector {
public static void injectTest(Object test) {
checkPreconditions(test);
MockitoAnnotations.initMocks(test);
FieldBindingsCollector fieldBindingsCollector = new FieldBindingsCollector();
fieldBindingsCollector.collectBindings(test);
injectGuiceStuff(test, fieldBindingsCollector);
}
private static void injectGuiceStuff(Object test, FieldBindingsCollector fieldBindingsCollector) {
BindingModule bindingModule = new BindingModule(fieldBindingsCollector.bindings());
ArrayList<Module> modules = new ArrayList<Module>();
modules.add(bindingModule);
if (test instanceof Module) {
modules.add((Module) test);
}
createInjector(modules).injectMembers(test);
}
}