0

Hello I am using RoboGuice and Mockito in my project I am facing problems resolving SystemServices in test...

I made a class

public class RoboInstrumentationTestCase extends InstrumentationTestCase {

protected Application application;
protected Context context;
protected Injector injector;

@Override
protected void setUp() throws Exception {
    application = mock(Application.class, RETURNS_DEEP_STUBS);
    context = mock(RoboActivity.class, RETURNS_DEEP_STUBS);
    injector = RoboGuice.setBaseApplicationInjector(application, RoboGuice.DEFAULT_STAGE, 
            Modules.override(RoboGuice.newDefaultRoboModule(application)).
            with(   new UtilModule(),
                    new DatabaseModule(), 
                    new FixtureModule(),
                    new RepositoryModule(),
                    new ServiceCoreModule(),
                    new ServiceModule()
                    ));
    when(context.getApplicationContext()).thenReturn(application);
    when(application.getApplicationContext()).thenReturn(application);

    super.setUp();
}

@Override
protected void tearDown() throws Exception {
    super.tearDown();
    RoboGuice.util.reset();
}

protected Injector getInjector() {
    return injector;
}
}

and in other class I need to retrieve the ConnectivityManager

public class ConnectivityUtilImpl implements ConnectivityUtil {

private ConnectivityManager connectivityManager;

@Inject
public void setConnectivityManager(ConnectivityManager connectivityManager) {
    this.connectivityManager = connectivityManager;
}

/* (non-Javadoc)
 * @see com.devsu.supermaxi.util.impl.ConnectivityUtil#getNetworkInfo(android.content.Context)
 */
@Override
public NetworkInfo getNetworkInfo(){
    return connectivityManager.getActiveNetworkInfo();
}

But I get the following error:

java.lang.ClassCastException: Object_Proxy cannot be cast to android.net.ConnectivityManager
at com.devsu.supermaxi.util.impl.ConnectivityUtilImpl.getNetworkInfo(ConnectivityUtilImpl.java:27)
at com.devsu.supermaxi.util.impl.ConnectivityUtilImpl.isConnected(ConnectivityUtilImpl.java:35)
at com.devsu.supermaxi.services.core.JSONService.execute(JSONService.java:144)
at com.devsu.supermaxi.services.core.BaseService.executeJSONService(BaseService.java:196)
at CardValidationService_Proxy.super$executeJSONService$org_json_JSONObject(CardValidationService_Proxy.generated)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.google.dexmaker.stock.ProxyBuilder.callSuper(ProxyBuilder.java:523)
at com.google.dexmaker.mockito.InvocationHandlerAdapter$ProxiedMethod.invoke(InvocationHandlerAdapter.java:98)
at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108)
at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36)
at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93)
at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)
at com.google.dexmaker.mockito.InvocationHandlerAdapter.invoke(InvocationHandlerAdapter.java:54)
at CardValidationService_Proxy.executeJSONService(CardValidationService_Proxy.generated)
at com.devsu.supermaxi.services.core.BaseService.executeSync(BaseService.java:173)
at com.devsu.supermaxi.services.CardValidationService.executeSync(CardValidationService.java:52)
at CardValidationService_Proxy.super$executeSync$org_json_JSONObject(CardValidationService_Proxy.generated)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.google.dexmaker.stock.ProxyBuilder.callSuper(ProxyBuilder.java:523)
at com.google.dexmaker.mockito.InvocationHandlerAdapter$ProxiedMethod.invoke(InvocationHandlerAdapter.java:98)
at org.mockito.internal.invocation.InvocationImpl.callRealMethod(InvocationImpl.java:108)
at org.mockito.internal.stubbing.answers.CallsRealMethods.answer(CallsRealMethods.java:36)
at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:93)
at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)
at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)
at com.google.dexmaker.mockito.InvocationHandlerAdapter.invoke(InvocationHandlerAdapter.java:54)
at CardValidationService_Proxy.executeSync(CardValidationService_Proxy.generated)
at com.devsu.supermaxi.services.test.CardValidationServiceTest.testInvalidCard(CardValidationServiceTest.java:57)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:545)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1575)
Darien Alvarez
  • 153
  • 2
  • 10
  • May I suggest a "keep it simple" approach, just keep a mock of `ConnectivityManager` and `NetworkInfo` and that's all you need to test this class –  Jan 20 '14 at 20:36
  • Thank you very much, you are right.. i will fallow your suggestion – Darien Alvarez Jan 21 '14 at 12:31

0 Answers0