Тайм-аут Действия не найдены.Вы забыли запустить действие, вызвав getActivity () или startActivitySync или подобное? - PullRequest
0 голосов
/ 01 мая 2019

В приложении для Android у меня есть 2 editText и одна кнопка.
Я хочу написать тест, чтобы при заполнении этих двух editText и нажатии кнопки, я хотел имитировать время ожидания.

Здесь мойТест эспрессо:

import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import java.util.concurrent.TimeUnit

@RunWith(AndroidJUnit4::class)
class AddTraderActivityNetworkTest {
    private val context = InstrumentationRegistry.getInstrumentation().getContext()
    private lateinit var mockServer: MockWebServer

    @Rule
    @JvmField
    var addTraderIntentTestRule: IntentsTestRule<AddTraderActivity> = IntentsTestRule(AddTraderActivity::class.java)

    @Before
    fun setup() {
        mockServer = MockWebServer()
        mockServer.start(8081)
    }

    @Test
    fun buttonStart_click_timeOut_showToast() {
        mockServer.enqueue(MockResponse()
                .setResponseCode(200)
                .throttleBody(1024, 1, TimeUnit.SECONDS))

        onView(withId(R.id.baseTextInputEditText))
                .perform(typeText(BASE_TEST))
        onView(withId(R.id.quoteTextInputEditText))
                .perform(typeText(QUOTE_TEST))
        onView(withId(R.id.startButton))
                .perform(click())
        onView(withText(R.string.service_unavailable)).inRoot(ToastMatcher())
                .check(matches(isDisplayed()))
    }

    @After
    @Throws
    fun tearDown() {
        // We're done with tests, shut it down
        mockServer.shutdown()
    }
}

Здесь настраиваемое совпадение:

class ToastMatcher : TypeSafeMatcher<Root>() {

    override fun describeTo(description: Description) {
        description.appendText("is toast")
    }

    override fun matchesSafely(root: Root): Boolean {
        val type = root.getWindowLayoutParams().get().type
        if (type == WindowManager.LayoutParams.TYPE_TOAST) {


              val windowToken = root.getDecorView().getWindowToken()
                val appToken = root.getDecorView().getApplicationWindowToken()
                if (windowToken === appToken) {
                    return true
                }
            }
            return false
        }
    }

Но когда я запускаю тест buttonStart_click_timeOut_showToast, он выходит из строя со следующим сообщением об ошибке:


    java.lang.RuntimeException: No activities found. Did you forget to launch the activity by calling getActivity() or startActivitySync or similar?
    at androidx.test.espresso.base.RootViewPicker.waitForAtLeastOneActivityToBeResumed(RootViewPicker.java:169)
    at androidx.test.espresso.base.RootViewPicker.get(RootViewPic

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...