Mockito 不能 mock/spy 因为:Final Class
Mockito cannot mock/spy because : Final Class
我知道这个问题被问了很多次,但我看了很多答案,但还是没用
How to mock a final class with mockito
在这个 link 中,他们说我们必须在我们的 gradle 中添加:
testImplementation 'org.mockito:mockito-inline:2.13.0'
=> 目前我有
testImplementation "org.mockito:mockito-inline:2.28.2"
我的 MockMaker 文件中也有这一行:
mock-maker-inline
然后你可以看到我下面的代码:
object ApiHelper {
fun <T> createService(
url: String,
clazz: Class<T>
): T
}
在我的 UITEST
@Mock
private lateinit var service: myService
private lateinit var apiHelper: ApiHelper
@Before
fun setUp() {
apiHelper = mock(ApiHelper::class.java)
given(ApiHelper.createService(
anyString(),
MyService::class.java,
)).willReturn(service)
}
我的代码有什么问题?我错过了什么吗?
不幸的是,这种模拟最终结果的方法 类 doesn't work for UI tests。
对于 UI 测试,您必须使用 the kotlin allopen plugin。
mocking library for Kotlin http://mockk.io
我之前也用过mockito,写的时候问题多多
相反,mockk 功能强大,它使您的测试更容易编写并且
object mocks 适合您的情况
我知道这个问题被问了很多次,但我看了很多答案,但还是没用
How to mock a final class with mockito
在这个 link 中,他们说我们必须在我们的 gradle 中添加:
testImplementation 'org.mockito:mockito-inline:2.13.0'
=> 目前我有
testImplementation "org.mockito:mockito-inline:2.28.2"
我的 MockMaker 文件中也有这一行:
mock-maker-inline
然后你可以看到我下面的代码:
object ApiHelper {
fun <T> createService(
url: String,
clazz: Class<T>
): T
}
在我的 UITEST
@Mock
private lateinit var service: myService
private lateinit var apiHelper: ApiHelper
@Before
fun setUp() {
apiHelper = mock(ApiHelper::class.java)
given(ApiHelper.createService(
anyString(),
MyService::class.java,
)).willReturn(service)
}
我的代码有什么问题?我错过了什么吗?
不幸的是,这种模拟最终结果的方法 类 doesn't work for UI tests。 对于 UI 测试,您必须使用 the kotlin allopen plugin。
mocking library for Kotlin http://mockk.io
我之前也用过mockito,写的时候问题多多
相反,mockk 功能强大,它使您的测试更容易编写并且
object mocks 适合您的情况