【问题标题】:Mockito cannot mock/spy because : Final ClassMockito 无法模拟/监视,因为:Final Class
【发布时间】:2020-01-03 10:43:22
【问题描述】:

我知道这个问题被问了很多时间,但我遵循了很多答案,但仍然没有用

How to mock a final class with mockito

在这个链接中,他们说我们必须在我们的 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)
    }

我的代码有什么问题?我错过了什么吗?

【问题讨论】:

    标签: android kotlin mockito mockito-kotlin


    【解决方案1】:

    Kotlin 的模拟库http://mockk.io

    我之前也用过mockito,写的时候问题太多了。

    相反,mock 功能强大,它使您的测试更容易编写和

    object mocks 只适合你的情况

    【讨论】:

      【解决方案2】:

      不幸的是,这种模拟最终课程的方法doesn't work for UI tests。 对于您的 UI 测试,您必须使用 the kotlin allopen plugin

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        相关资源
        最近更新 更多