Android - Espresso 如何在点击并移动到另一个视图后测试视图 Activity
Android - Espresso How to test an view after clicked and moved to another Activity
我是 Espresso 的初学者 UI 测试。我有一个问题,我找到了解决方案,但我不知道如何正确地做到这一点:((
问题:
我有 2 个 ImageView,当我单击一次时将更改它的可绘制对象并启动 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
,所以它无法从 OtherActivty2
的根视图中找到带有 id
的视图
在这种情况下,有什么解决方案可以帮助我检查 ImageView 的可绘制对象吗?
非常感谢。
通过这种方式,您可以捕捉到您的应用将打开另一个 activity 并响应一个结果。然后,由于 activity 你没有改变,你可以在那里检查可绘制对象。
你的代码应该是这样的:
@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))
}
不要忘记在 build.gradle
文件中添加 espresso-intents
依赖项。
我是 Espresso 的初学者 UI 测试。我有一个问题,我找到了解决方案,但我不知道如何正确地做到这一点:((
问题: 我有 2 个 ImageView,当我单击一次时将更改它的可绘制对象并启动 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
,所以它无法从 OtherActivty2
id
的视图
在这种情况下,有什么解决方案可以帮助我检查 ImageView 的可绘制对象吗?
非常感谢。
通过这种方式,您可以捕捉到您的应用将打开另一个 activity 并响应一个结果。然后,由于 activity 你没有改变,你可以在那里检查可绘制对象。
你的代码应该是这样的:
@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))
}
不要忘记在 build.gradle
文件中添加 espresso-intents
依赖项。