首页 > 解决方案 > Android Mockito.verify 说参数不同!打印相同的内容

问题描述

情况

我有一个Tracker具有此方法的接口:

fun trackEvent(event: String, args: Bundle? = null)

我想验证,这个方法是用特定的event. 被测试的内部对象使用对象调用此方法Bundle。所有事件都指定为

companion object {
        const val EVENT = "EVENT"
}

问题

测试因此验证而失败:

Mockito.verify(tracker).trackEvent(Tracker.EVENT)

带有消息:

论据不同!通缉:tracker.trackEvent("EVENT", null); ...

实际调用有不同的参数:tracker.trackEvent("EVENT", null); ...

有很多解决方案,它们正在使用 Mockito.eq(), Mockito.refEq(), ArgumentMatchers,Captures等。它们都不适合我,给出相同或NullPointerException

标签: androidjunitkotlinmockito

解决方案


对于那些将面临同样问题的人,解决方案是您需要 testImplementation "com.nhaarman:mockito-kotlin:1.5.0"build.gradle文件中添加。更多信息,在这里 https://github.com/nhaarman/mockito-kotlin

问题是,在Java所有类中,默认情况下都是可以为空的,不像Kotlin. 虽然 mockito 旨在JavaKotlin.

所以,这个特定测试的解决方案

Mockito.verify(tracker).trackEvent(Tracker.EVENT)

Mockito.verify(tracker).trackEvent(eq(Tracker.ADD_TRANSACTION), any())

其中eq()any()是 的函数com.nhaarman.mockito_kotlin

更多信息在这里:https ://stackoverflow.com/a/38722935/3569545


推荐阅读