我有一个ViewModel
,其代码正在execute
块内(在Runnable
内)运行。一切正常,除了在进行单元测试时无法成功使代码在主线程中运行(即使对其进行调试,我也可以看到其中的代码未运行。)
如果我让代码在execute
块之外运行,则测试工作正常。
我们有几个辅助函数使此功能在Java中起作用,但显然在Kotlin中不起作用。我们过去在块中运行代码的方式是调用执行该代码的方法,然后调用下面的两个方法之一。这些功能是:
open fun runExecutor()
{
val captor = argumentCaptor<Runnable>()
verify(executor, atLeastOnce()).execute(captor.capture())
for (runnable in captor.allValues)
{
runnable.run()
}
}
open fun runLastExecutor()
{
val captor = argumentCaptor<Runnable>()
verify(executor, atLeastOnce()).execute(captor.capture())
val runnableList = captor.allValues
if (!runnableList.isEmpty())
{
runnableList[runnableList.size - 1].run()
}
}
我正在使用Dagger 2,在我所谓的TestServiceModule
中,我们有private val executor: ExecutorService = mock()
。
让大家知道我们正在使用Mockito 2和Mockito Kotlin也许很有用,以防万一,或者它们可能是应受之罪。
非常感谢您的帮助!