一个模拟的类怎么能不等于它在Kotlin的java类呢?
(activity as HomeActivity).javaClass == HomeActivity::class.java
返回false
。 为什么? 请注意, activity
是与以下功能模拟
fun set(activity: KClass<out Activity>) { this.activity = Mockito.mock(activity.java) }
你可能想要使用:
if(activity is HomeActivity)
而不是(activity as HomeActivity).javaClass == HomeActivity::class.java
原因是Mockito.mock(HomeActivity.java)
将动态创建一个实现 HomeActivity
的类,使用SomeFooMockitoImpl.class
获取HomeActivity.class
作为参数来创建HomeActivity.class
实例。
你可以在运行时检查模拟对象将是这样的: HomeActivity$$EnhancerByMockitoWithCGLIB$$b8254f54
和它的实际类名称通过:
activity.javaClass.simpleName
(应该是SomeFooMockitoImpl
)