一个模拟的类怎么能不等于它在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