Android - Espresso Как проверить вид после щелчка и перехода в другой вид деятельности - PullRequest
0 голосов
/ 09 октября 2019

Я новичок в тестировании Espresso UI. У меня есть проблема, я нашел решение, но я не знаю, как это сделать правильно: ((

Проблема: У меня есть 2 ImageView, когда я нажимаю один раз, изменит рисованиеоб этом и начать действие. Я хочу проверить рисование после того, как клик исправит?

Мой код

// In Main Activity
val imageView1 = findViewById(R.id.iv_button1)
imageView1.setOnClickListener {
    imageView1.setImageDrawable(resources.getDrawable(R.drawable.image1))
    startActivity(Intent(applicationContext, OtherAcitivy1::class.java))
}
val imageView2 = findViewById(R.id.iv_button2)
imageView2.setOnClickListener {
    imageView2.setImageDrawable(resources.getDrawable(R.drawable.image2))
    startActivity(Intent(applicationContext, OtherAcitivy2::class.java))
}

// In Android Test Class
...After run activiy
@Test
fun checkClickImageView1() {
    onView(withId(R.id.iv_button1)).perform(click())

    // In here, I want to check the imageview has displayed drawable correctly
    onView(withId(R.id.iv_button1)).check(withDrawableMatcher(R.drawable.image1))
}

Но, это исключение не может быть найденопросмотр с R.id.iv_button1.

Я думаю, потому что я запускаю OtherActivty2 по щелчку действия, чтобы он не мог найти представление с этим id из корневого представления OtherActivty2

Есть какие-либоРешение может помочь мне проверить Drawable ImageView в этом случае?

Большое спасибо.

1 Ответ

0 голосов
/ 09 октября 2019

Я бы использовал намерения эспрессо

Таким образом, вы поймете, что ваше приложение откроет другое действие и ответит результатом. Затем, так как ваша деятельность не изменилась, вы можете проверить ее там.

Код в вашем случае должен выглядеть примерно так:

@Test
fun checkClickImageView1() {
    val result = Instrumentation.ActivityResult(Activity.RESULT_OK, null)
    // Set up result stubbing when an intent sent to "OtherAcitivy2" is seen.
    intending(hasComponent(OtherAcitivy2::class.java.name)).respondWith(result)
    onView(withId(R.id.iv_button1)).perform(click())

    onView(withId(R.id.iv_button1)).check(withDrawableMatcher(R.drawable.image1))
}

не забудьте добавить espresso-intents зависимостей в вашем build.gradle файле.

...