java - 你如何让 Mockito 与 Kotlin 不可为空的类型配合得很好?

标签 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.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)

```

从理论上讲,我可以使我试图模拟的方法的参数可以为空,但这违背了 kotlin 的目的。我在网上找到了替代解决方案,即这些解决方法:https://stackoverflow.com/a/30308199/2127532

但这些并没有解决问题,似乎其他人评论说他们不适用于最新版本的 Kotlin。他们一开始就觉得很老套。

我也试过使用这个库:https://github.com/nhaarman/mockito-kotlin

我再次收到 IllegalStateException 错误。

有人有想法吗?

最佳答案

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

private fun <T> any(type : Class<T>): T {
    Mockito.any(type)
    return null as T
}

关于java - 你如何让 Mockito 与 Kotlin 不可为空的类型配合得很好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51868577/

相关文章:

java - 如何通过在 GUI 中单击 JButton 来启动 .exe 文件?

java - 获取Google搜索页面的所有搜索结果

android - 确定移动用户是否在浏览器中扫描二维码或键入 URL?

android - 'return' 不会跳出 Kotlin 中的 forEach

java - 如何在GroupLayout中调整图像大小?

java - 扩展 BufferedImage 类

Android YouTube API 广告

java - 如何在动画之前和之后执行 Action

android - Coordinatorlayout adjustResize 打开键盘时不折叠工具栏

android - 在房间数据库中调用 'insert' 未完成事务