相关疑难解决方法(0)

一个带有mockito测试的简单kotlin类导致了MissingMethodInvocationException

我开始学习Kotlin和Mockito,所以我编写了一个简单的模块来测试它.

AccountData_K.kt:

open class AccountData_K {
var isLogin: Boolean = false
var userName: String? = null

    fun changeLogin() : Boolean {
        return !isLogin
    }
}
Run Code Online (Sandbox Code Playgroud)

AccountDataMockTest_K.kt:

class AccountDataMockTest_K {
    @Mock
    val accountData = AccountData_K()

    @Before
    fun setupAccountData() {
        MockitoAnnotations.initMocks(this)
    }

    @Test
    fun testNotNull() {
        assertNotNull(accountData)
    }

    @Test
    fun testIsLogin() {
        val result = accountData.changeLogin()
        assertEquals(result, true)
    }

    @Test
    fun testChangeLogin() {        
        `when`(accountData.changeLogin()).thenReturn(false)
        val result = accountData.changeLogin()
        assertEquals(result, false)
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,它会报告有关该testChangeLogin()方法的异常:

org.mockito.exceptions.misusing.MissingMethodInvocationException: 
when() requires an argument which has …
Run Code Online (Sandbox Code Playgroud)

android unit-testing mockito kotlin

3
推荐指数
1
解决办法
2172
查看次数

标签 统计

android ×1

kotlin ×1

mockito ×1

unit-testing ×1