Kotlin coroutines使用mockito进行单元测试

时间:2017-11-29 20:00:31

标签: android unit-testing kotlin mockito kotlinx.coroutines

当我尝试模拟并验证正在调用挂起函数的活动时,我得到以下内容

错误:

争论是不同的!通缉: userManager.getAccountInfo( (onCreate_callsGetAccountInformation $ 1)kotlinx.coroutines.experimental.CoroutineScope。() - > kotlin.Unit ); - > at com.pharmacy.AccountActivityTests $ onCreate_callsGetAccountInformation $ 1.doResume(AccountActivityTests.kt:117) 实际调用有不同的参数: userManager.getAccountInfo( ()kotlinx.coroutines.experimental.CoroutineScope。() - > kotlin.Unit ) - > at com.pharmacy.AccountActivity $ loadAccountInfoAsync $ 1 $ 1.doResume(AccountActivity.kt:199)

代码:

我的runBlocking装饰了我的单元测试用例,如下所示:

    @Test 
    fun onCreate_callsGetAccountInformation() = runBlocking<Unit> 
    { whenever(userManager.getAccountInfo()).thenReturn(AccountInformation()) 
      subject = Robolectric.setupActivity(AccountActivity::class.java) 
      verify(userManager).getAccountInfo() 
    }

这里 - &gt; usermanager.getAccountInfo()是一个挂起函数。

1 个答案:

答案 0 :(得分:1)

这是mockito版本,2.10及以下版本不支持暂停功能。碰到最新(2.12)修复它。