Android:在主线程上测试ExecutorService

时间:2019-01-11 09:51:53

标签: java android kotlin executorservice

我有一个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也许很有用,以防万一,或者它们可能是应受之罪。

非常感谢您的帮助!

0 个答案:

没有答案