2017-08-08 86 views
1

界面如下:中的Mockito的Android錯誤:拋出java.lang.ClassNotFoundException:android.os.Parcelable

interface ILoginView{ 
    fun userResponseProcessor(user: User?) 
} 

我嘲笑接口在我的測試類:

@Mock 
private val mMockLoginView: ILoginView? = null 

運行時本次測試,發生錯誤

Underlying exception : java.lang.IllegalArgumentException: Could not create type 

     at org.mockito.internal.runners.DefaultInternalRunner$1.withBefores(DefaultInternalRunner.java:38) 
     at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:276) 
    ... 
    Caused by: java.lang.ClassNotFoundException: android.os.Parcelable 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 75 more 

如何解決錯誤?

+0

User類是Parcelable –

回答

2

首先請使用中的Mockito正確版本:

androidTestCompile ''org.mockito:mockito-android:2.8.47' 
testCompile 'org.mockito:mockito-android:2.8.47' 

其次,有兩種類型的Android項目中的測試:本地單元測試和儀器化檢驗。請參閱official documentation for more details

本地單元測試可在您的筆記本電腦或臺式機上的JVM上運行。因此,他們無法訪問像Parcelable這樣的原生Android類,如果您針對使用這些方法的類運行本地單元測試,則會出現錯誤。

在這個階段,你有兩個選擇,你可以根據儀器測試一個真正的設備或模擬器上運行測試,也可以使用像Robolectric一個框架,它可以讓你與所有的本地類,如Parcelable的運行本地單元測試