2017-05-18 2 views
0

は、私はそれがMockito.mock(AccountManager.class)を実行したときにDaggerが提供するMock AccountManagerを使用すると、Java.lang.reflect.InvocationTargetExceptionが発生します。直し方?私の短剣で

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.' 

の下に、私は来ませんでしたように私は、下記のクラッシュを行くモックアカウントマネージャ

@Provides 
@Singleton 
AccountManager provideAccountManager(Context context) { 
    return Mockito.mock(AccountManager.class); 
} 

を提供したいです何か?デビッド・ローソンさんのコメントに基づいて

+1

どのバージョンのMockitoですか?最新のmockito-android(ByteBuddyを使用し、cglibは使用していません)を使用してください。[this one](http://search.maven.org/#artifactdetails%7Corg.mockito%7Cmockito-android%7C2.7.22%7Cjar) –

+0

ありがとうございます。それは助けます! – Elye

答えて

2

、私は

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

から問題を解決

androidTestCompile 'org.mockito:mockito-android:2.7.22' 

に私の依存関係を変えます!

+1

彼です。うれしかったよ! –

関連する問題