Kotlin
里有一种object
类型的类,它在使用上跟Java
里的静态类很相似。事实上,它们编译后确实很相似,只不过Kotlin
在语法层面上隐藏了一些实现细节,这些细节如果不清楚的话往往会引发一些意料之外的错误。
Mockito
是可以直接mock
静态方法的,而Mockito
在mock
这种Kotlin
类里定义的"静态方法"时却会直接报错,为什么呢?
比如我创建一个Kotlin
Object
类:ObjectMethod
package com.baichuan.example.unit_test
object ObjectMethod {
fun doSomething() {
println("this is ObjectMethod#doSomething")
}
@JvmStatic
fun doSomethingWithJvmStatic() {
println("this is ObjectMethod#doSomethingWithJvmStatic")
}
}
如果我直接去mock
该类的doSomething
方法,会报错。
@Test
@DisplayName("mock普通的kotlin静态方法")
fun testMockKotlinObject() {
Assertions.assertThrows(MissingMethodInvocationException::class.java) {