Cap*_*rge 5 java android mockito kotlin
作为重现这个概念的一个非常基本的例子,我有这个类:
open class Something {
fun doSomething(param: String): Boolean {
println(param)
return true
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在这里嘲笑它时:
class ExampleUnitTest {
@Test
fun mockito_test() {
val myMock = Mockito.mock(Something::class.java)
Mockito.`when`(myMock.doSomething(any())).thenReturn(true)
}
}
Run Code Online (Sandbox Code Playgroud)
执行此单元测试会出现此错误:
java.lang.IllegalStateException: any() must not be null
at com.example.mockitokotlinexample.ExampleUnitTest.mockito_test(ExampleUnitTest.kt:18)
Run Code Online (Sandbox Code Playgroud)
``
理论上我可以使我试图模拟的方法的参数可以为空,但这违背了 kotlin 的目的。我在网上找到了替代解决方案,即这些解决方法:https : //stackoverflow.com/a/30308199/2127532
但是这些并没有使问题消失,似乎其他人已经评论说他们不适用于最新版本的 Kotlin。他们一开始就觉得很讨厌。
我也尝试使用这个库:https : //github.com/nhaarman/mockito-kotlin
我再次收到 IllegalStateException 错误。
有人有想法吗?
小智 2
我通过创建自己的 any() 解决了这个问题
private fun <T> any(type : Class<T>): T {
Mockito.any(type)
return null as T
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |