嘲笑Kotlin和Mockito的通用接口
我正在尝试使用Mockito模拟Kotlin中的通用接口。 但到目前为止,我没有find自然的解决办法。 鉴于:
interface X { fun x(): T } fun f(x: X) = xx()
我可以用下面的任何一个来模拟X
:
-
val x = f(Mockito.mock(X::class.java) as X)
但是这会产生一个“不受控制的投射”的警告。
-
@Mock lateinit var x: X
但我不想使用
@Mock
注释,因为我喜欢让我的字段最终。 -
引入一个辅助函数,就像mockito-kotlin库所做的那样:
inline fun mock(): T = Mockito.mock(T::class.java)!!
然后像这样调用它:
val x: X = mock()
但我不想使用帮助函数。
有没有一个优雅的纯Kotlin方式来模拟与Mockito的通用接口? (我更喜欢1的版本,没有警告。)
只需使用mockito-kotlin项目。 这个项目包含所有mockito必须的帮手。 并支持mockito 2.1。
UPD。 要处理“未经转换的转换”,请使用Reifiedtypes参数 。
你说“但是我不想使用帮助函数”,但是为什么呢? 这是内联函数,所以在编译时函数会在所有的调用网站都会内联。
- 嘲弄的对象仍在调用方法(Mockito + Kotlin)
- sharedpreferences上的nullPointerException helper类运行测试时
- 是不是可以设定一个懒惰的财产预期?
- Kotlin单元测试没有发现模块依赖性接口
- SpringBoot ArrayIndexOutOfBoundsException MethodParameter.getGenericParameterType
- 我怎么能测试一个方法是不是被称为非模拟对象?
- Mockitounit testing:在一个类的所有方法调用中,返回“true”
- Mockito ArgumentCaptor为Kotlin函数
- MissingMethodInvocationException在Kotlin中测试已打开的类