Android-Espresso如何在单击并移动到另一个活动后测试视图

问题描述 投票:0回答:1

我是Espresso UI测试的初学者。我有一个问题,我找到了解决方法,但我不知道如何正确执行:((

问题:我有2个ImageView,当我单击一次时,将更改它的drawable并启动一个Activity。单击正确后,我想检查可绘制图形吗?

我的代码

// 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的视图

在这种情况下,有什么解决方案可以帮助我检查ImageView的可绘制对象吗?

非常感谢。

android android-espresso ui-testing
1个回答
0
投票
我会使用espresso intents

通过这种方式,您捕获到您的应用程序将打开其他活动并响应结果。然后,由于您尚未更改活动,因此可以在此处检查可绘制对象。

您的情况下的代码应类似于:

@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依赖项。
© www.soinside.com 2019 - 2024. All rights reserved.