guice java.lang.ClassCastException:无法将对象_代理强制转换为android.net.ConnectionManager
您好,我在我的项目中使用RoboGuice和Mockito,我在测试中遇到了解决guice java.lang.ClassCastException:无法将对象_代理强制转换为android.net.ConnectionManager,java,android,mockito,roboguice,Java,Android,Mockito,Roboguice,您好,我在我的项目中使用RoboGuice和Mockito,我在测试中遇到了解决SystemServices的问题 我上了一节课 public class RoboInstrumentationTestCase extends InstrumentationTestCase { protected Application application; protected Context context; protected Injector injector; @Override protect
SystemServices
的问题
我上了一节课
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;
}
}
在另一个类中,我需要检索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();
}
但我得到了以下错误:
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)
请允许我建议一种“保持简单”的方法,只需模拟一下
ConnectivityManager
和NetworkInfo
,这就是您测试这个类所需的全部内容非常感谢,您是对的。。我不考虑你的建议