Java 如何让Mockito更好地处理Kotlin非空类型?

Java 如何让Mockito更好地处理Kotlin非空类型?,java,android,kotlin,mockito,Java,Android,Kotlin,Mockito,作为重现这一概念的一个非常基本的例子,我有以下课程: open class Something { fun doSomething(param: String): Boolean { println(param) return true } } 当我试图在这里嘲弄它时: class ExampleUnitTest { @Test fun mockito_test() { val myMock = Mockito.

作为重现这一概念的一个非常基本的例子,我有以下课程:

open class Something {
    fun doSomething(param: String): Boolean {
        println(param)
        return true
    }
}
当我试图在这里嘲弄它时:

class ExampleUnitTest {
    @Test
    fun mockito_test() {
        val myMock =  Mockito.mock(Something::class.java)
        Mockito.`when`(myMock.doSomething(any())).thenReturn(true)
    }
}
执行此单元测试会出现以下错误:

java.lang.IllegalStateException: any() must not be null

    at com.example.mockitokotlinexample.ExampleUnitTest.mockito_test(ExampleUnitTest.kt:18)
```

理论上,我可以使我试图模拟的方法的参数为null,但这违背了kotlin的目的。我在网上找到了替代解决方案,即以下解决方法:

但这些并没有使问题消失,似乎其他人评论说他们不适用于Kotlin的最新版本。他们一开始就觉得不舒服

我还尝试使用此库:

我再次得到了非法状态异常错误


有人有想法吗?

我通过创建自己的any()解决了这个问题

private fun any(类型:Class):T{
Mockito.any(类型)
将null返回为T
}

如果您使用
any(Class)
anyString()?上面说的
any()
也匹配空值。我仍然遇到同样的问题。问题在于
any()
匹配null,因为
any()
返回null,我们将它传递给一个参数不可为null的方法。但这不正是
any(类)
anyString()
所承诺的吗?他们不应该返回空值。试着给他们一个机会。我从几个月前开始使用它,直到现在都没有问题。您是否尝试使用您链接的SO帖子中的帮助程序,特别是
fun any():T=Mockito.any()
?这是来自的,对我来说很有效。对我来说,这个解决方案只是把问题推迟到以后。
private fun <T> any(type : Class<T>): T {
    Mockito.any(type)
    return null as T
}