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 适合您的情况