Android 通过Dagger提供模拟AccountManager时的Java.lang.reflect.InvocationTargetException。如何修复?

Android 通过Dagger提供模拟AccountManager时的Java.lang.reflect.InvocationTargetException。如何修复?,android,unit-testing,mockito,accountmanager,Android,Unit Testing,Mockito,Accountmanager,在我的匕首中,我想提供一个模拟的客户经理 @Provides @Singleton AccountManager provideAccountManager(Context context) { return Mockito.mock(AccountManager.class); } 当它运行Mockito.mock(AccountManager.class)时,我看到下面的崩溃,如下所示 java.lang.ExceptionInInitializerError at

在我的匕首中,我想提供一个模拟的客户经理

@Provides
@Singleton
AccountManager provideAccountManager(Context context) {
    return Mockito.mock(AccountManager.class);
}
当它运行Mockito.mock(AccountManager.class)时,我看到下面的崩溃,如下所示

    java.lang.ExceptionInInitializerError
    at org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85)
    at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62)
    at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:56)
    at org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23)
    at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)
    at org.mockito.Mockito.mock(Mockito.java:1243)
    at org.mockito.Mockito.mock(Mockito.java:1120)
    at com.mypackage.app.test.TestAndroidServicesModule.provideAccountManager(TestAndroidServicesModule.java:118)
    at com.mypackage.app.test.TestAndroidServicesModule_ProvideAccountManagerFactory.get(TestAndroidServicesModule_ProvideAccountManagerFactory.java:31)
    at com.mypackage.app.test.TestAndroidServicesModule_ProvideAccountManagerFactory.get(TestAndroidServicesModule_ProvideAccountManagerFactory.java:10)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
    at au.com.mypackage.utils.AccountUtil_Factory.get(AccountUtil_Factory.java:71)
    at au.com.mypackage.utils.AccountUtil_Factory.get(AccountUtil_Factory.java:13)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
    at au.com.mypackage.utils.ShortcutUtil_Factory.get(ShortcutUtil_Factory.java:41)
    at au.com.mypackage.utils.ShortcutUtil_Factory.get(ShortcutUtil_Factory.java:9)
    at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
    at au.com.mypackage.app.ui.main.MainActivity_MembersInjector.injectMembers(MainActivity_MembersInjector.java:76)
    at au.com.mypackage.app.ui.main.MainActivity_MembersInjector.injectMembers(MainActivity_MembersInjector.java:13)
    at com.mypackage.app.test.DaggerResiTestComponent.inject(DaggerResiTestComponent.java:1814)
    at au.com.mypackage.app.ui.main.MainActivity.onCreate(MainActivity.java:113)
    at android.app.Activity.performCreate(Activity.java:6679)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
    at android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:532)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
    Caused by: org.mockito.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
    at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:238)
    at org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
    at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)
    at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)
    at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)
    at org.mockito.cglib.proxy.Enhancer.<clinit>(Enhancer.java:70)
    ... 35 more
    Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at org.mockito.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:385)
    at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:220)
    ... 40 more
    Caused by: java.lang.UnsupportedOperationException: can't load this type of class file
    at java.lang.ClassLoader.defineClass(ClassLoader.java:594)
    ... 43 more

    Test running failed: Instrumentation run failed due to 'Process crashed.'
java.lang.ExceptionInInitializeError
位于org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:85)
位于org.mockito.internal.creation.jmock.ClassImposterizer.importerise(ClassImposterizer.java:62)
位于org.mockito.internal.creation.jmock.ClassImposterizer.importise(ClassImposterizer.java:56)
位于org.mockito.internal.creation.CglibMockMaker.createMock(CglibMockMaker.java:23)
位于org.mockito.internal.util.MockUtil.createMock(MockUtil.java:26)
位于org.mockito.internal.MockitoCore.mock(MockitoCore.java:51)
位于org.mockito.mockito.mock(mockito.java:1243)
位于org.mockito.mockito.mock(mockito.java:1120)
位于com.mypackage.app.test.TestAndroidServicesModule.provideAccountManager(TestAndroidServicesModule.java:118)
在com.mypackage.app.test.TestAndroidServicesModule\u ProvideAccountManagerFactory.get(TestAndroidServicesModule\u ProvideAccountManagerFactory.java:31)
在com.mypackage.app.test.TestAndroidServicesModule\u ProvideAccountManagerFactory.get(TestAndroidServicesModule\u ProvideAccountManagerFactory.java:10)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
在au.com.mypackage.utils.AccountUtil\u Factory.get(AccountUtil\u Factory.java:71)
在au.com.mypackage.utils.AccountUtil\u Factory.get(AccountUtil\u Factory.java:13)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
在au.com.mypackage.utils.ShortcutUtil_Factory.get(ShortcutUtil_Factory.java:41)
在au.com.mypackage.utils.ShortcutUtil\u Factory.get(ShortcutUtil\u Factory.java:9)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
位于au.com.mypackage.app.ui.main.MainActivity_MembersInjector.injectMembers(MainActivity_MembersInjector.java:76)
在au.com.mypackage.app.ui.main.MainActivity_MembersInjector.injectMembers(MainActivity_MembersInjector.java:13)
在com.mypackage.app.test.daggerresistcomponent.inject(daggerresistcomponent.java:1814)上
位于au.com.mypackage.app.ui.main.MainActivity.onCreate(MainActivity.java:113)
位于android.app.Activity.performCreate(Activity.java:6679)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
位于android.support.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:532)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
位于android.app.ActivityThread.-wrap12(ActivityThread.java)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:154)
位于android.app.ActivityThread.main(ActivityThread.java:6119)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
原因:org.mockito.cglib.core.CodeGenerationException:java.lang.reflect.InvocationTargetException-->null
位于org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:238)
位于org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)
位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)
位于org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)
位于org.mockito.cglib.proxy.Enhancer(Enhancer.java:70)
... 35多
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Method.invoke(本机方法)
位于org.mockito.cglib.core.reflectils.defineClass(reflectils.java:385)
位于org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:220)
... 40多
原因:java.lang.UnsupportedOperationException:无法加载此类型的类文件
位于java.lang.ClassLoader.defineClass(ClassLoader.java:594)
... 43多
测试运行失败:由于“进程崩溃”,检测运行失败

我错过了什么吗?

根据大卫·罗森的评论,我将依赖关系从

androidTestCompile 'org.mockito:mockito-all:1.9.5'


这就解决了问题

Mockito的哪个版本?请使用最新的mockito android,它使用的是ByteBuddy而不是cglib,也就是说,谢谢。那有帮助!!呵呵。很高兴它有帮助!
androidTestCompile 'org.mockito:mockito-android:2.7.22'