package com.example.activity; import android.app.Application; import com.google.inject.AbstractModule; import com.google.inject.Module; import com.google.inject.util.Modules; import org.robolectric.Robolectric; import roboguice.RoboGuice; import roboguice.config.DefaultRoboModule; import roboguice.inject.RoboInjector; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Description for the class TestGuiceModule: * <p/> * Example usage: * <p/> * <pre> * * </pre> * * @author mdkr * @version Copyright (c) 2012 HAN University, All rights reserved. */ public class TestGuiceModule extends AbstractModule { private HashMap<Class<?>, Object> bindings; public TestGuiceModule() { bindings = new HashMap<Class<?>, Object>(); } @Override @SuppressWarnings("unchecked") protected void configure() { Set<Map.Entry<Class<?>, Object>> entries = bindings.entrySet(); for (Map.Entry<Class<?>, Object> entry : entries) { bind((Class<Object>) entry.getKey()).toInstance(entry.getValue()); } } public void addBinding(Class<?> type, Object object) { bindings.put(type, object); } public static void setUp(Object testObject, TestGuiceModule module) { Module roboGuiceModule = RoboGuice.newDefaultRoboModule(Robolectric.application); Module productionModule = Modules.override(roboGuiceModule).with(new DeckardModule()); Module testModule = Modules.override(productionModule).with(module); RoboGuice.setBaseApplicationInjector(Robolectric.application, RoboGuice.DEFAULT_STAGE, testModule); RoboInjector injector = RoboGuice.getInjector(Robolectric.application); injector.injectMembers(testObject); } public static void tearDown() { RoboGuice.util.reset(); Application app = Robolectric.application; DefaultRoboModule defaultModule = RoboGuice.newDefaultRoboModule(app); RoboGuice.setBaseApplicationInjector(app, RoboGuice.DEFAULT_STAGE, defaultModule); } }