模拟的类如何不能与Kotlin中的java类相等?

时间:2016-10-05 16:36:27

标签: mockito kotlin

(activity as HomeActivity).javaClass == HomeActivity::class.java

返回false。为什么?注意,activity使用以下函数进行模拟

fun set(activity: KClass<out Activity>) {
    this.activity = Mockito.mock(activity.java)
}

1 个答案:

答案 0 :(得分:5)

您可能想要使用:

if(activity is HomeActivity)代替(activity as HomeActivity).javaClass == HomeActivity::class.java

原因是Mockito.mock(HomeActivity.java)将使用HomeActivity动态创建一个实现 SomeFooMockitoImpl.class的类,它将HomeActivity.class作为参数来创建该模拟实例

您可以在运行时检查模拟对象将是这样的: HomeActivity$$EnhancerByMockitoWithCGLIB$$b8254f54

及其实际的类名:

activity.javaClass.simpleName(应为SomeFooMockitoImpl