Как установить тестовый код, завернутый в `runOnUiThread`?

У меня есть функция, которая вызывает runOnUiThread как runOnUiThread ниже.

 fun myFunction(myObject: MyClass, view: MyView) { // Do something view.getActivity().runOnUiThread { myObject.myObjectFunction() } } 

Я хочу использовать функцию UnitTest myFunction чтобы myObject вызывал myObjectFunction . Но, учитывая, что это wrap в runOnUiThread , я не могу добраться до него.

Как я могу выполнить runOnUiThread тест для обеспечения кодов в runOnUiThread ?

    Управляйте, чтобы найти способ выполнить тест с помощью ArgumentCaptor . Захватите Runnable в функции runOnUiThread() , а затем запустите прогон через runOnUiArgCaptor.value.run()

     import com.nhaarman.mockito_kotlin.argumentCaptor import com.nhaarman.mockito_kotlin.verify import com.nhaarman.mockito_kotlin.whenever import org.junit.Before import org.junit.Test import org.mockito.Mock @Mock lateinit var activity: Activity @Mock lateinit var view: MyView @Mock lateinit var myObject: MyObject @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun my_test_function() { whenever(view.getActivity()).thenReturn(activity) val runOnUiArgCaptor = argumentCaptor<Runnable>() val myTestObject = TestObject() myTestObject.myFunction(myObject, view) verify(activity).runOnUiThread(runOnUiArgCaptor.capture()) runOnUiArgCaptor.value.run() verify(myObject).myObjectFunction() } , import com.nhaarman.mockito_kotlin.argumentCaptor import com.nhaarman.mockito_kotlin.verify import com.nhaarman.mockito_kotlin.whenever import org.junit.Before import org.junit.Test import org.mockito.Mock @Mock lateinit var activity: Activity @Mock lateinit var view: MyView @Mock lateinit var myObject: MyObject @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun my_test_function() { whenever(view.getActivity()).thenReturn(activity) val runOnUiArgCaptor = argumentCaptor<Runnable>() val myTestObject = TestObject() myTestObject.myFunction(myObject, view) verify(activity).runOnUiThread(runOnUiArgCaptor.capture()) runOnUiArgCaptor.value.run() verify(myObject).myObjectFunction() }