gpt4 book ai didi

使用 Kotlin 和 Mockito 模拟通用接口(interface)

转载 作者:行者123 更新时间:2023-12-02 13:31:40 26 4
gpt4 key购买 nike

我正在尝试使用 Mockito 模拟 Kotlin 中的通用接口(interface)。但到目前为止我还没有找到自然的解决方案。鉴于:

interface X<T> {
fun x(): T
}

fun f(x: X<Int>) = x.x()

我可以 mock X具有以下任何一项:

  1. val x = f(Mockito.mock(X::class.java) as X<Int>)

    但这会生成“未经检查的转换”警告。

  2. @Mock lateinit var x: X<Int>

    但我不想使用@Mock注释,因为我喜欢将我的字段设置为最终的。

  3. 引入一个辅助函数,如mockito-kotlin library是:

    inline fun <reified T : Any> mock(): T = Mockito.mock(T::class.java)!!

    然后这样调用它:

    val x: X<Int> = mock()

    但我不想使用辅助函数。

是否有一种优雅的纯 Kotlin 方式来使用 Mockito 模拟通用接口(interface)?(我更喜欢没有警告的 1. 版本。)

最佳答案

只需使用 mockito-kotlin项目。该项目包含所有mockito 必须有的助手。并且还支持mockito 2.1。

更新。要处理“未检查的强制转换”,请使用 Reified type parameters .

你说“但我不想使用辅助函数。”,但为什么呢?这是内联函数,因此在编译时函数将在所有调用站点处内联。

关于使用 Kotlin 和 Mockito 模拟通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40495622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com