Androidx:如何在 UI 测试(Espresso)中测试 Slider?
Androidx : How to test Slider in UI tests (Espresso)?
如何对滑块执行操作(移动光标)?
如何检查滑块值?
这个有现成的函数吗?
滑块看起来像这样:
<com.google.android.material.slider.Slider
android:id="@+id/sliderRating"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stepSize="1"
android:valueFrom="1.0"
android:valueTo="5.0" />
和 Espresso 检查:onView(withId(R.id.sliderRating)).check( -> TODO <- )
很容易创建几个方法来做到这一点。
这是我的资料:
fun withValue(expectedValue: Float): Matcher<View?> {
return object : BoundedMatcher<View?, Slider>(Slider::class.java) {
override fun describeTo(description: Description) {
description.appendText("expected: $expectedValue")
}
override fun matchesSafely(slider: Slider?): Boolean {
return slider?.value == expectedValue
}
}
}
fun setValue(value: Float): ViewAction {
return object : ViewAction {
override fun getDescription(): String {
return "Set Slider value to $value"
}
override fun getConstraints(): Matcher<View> {
return ViewMatchers.isAssignableFrom(Slider::class.java)
}
override fun perform(uiController: UiController?, view: View) {
val seekBar = view as Slider
seekBar.value = value
}
}
}
第一个,自定义视图匹配器,用于测试 Slider
是否具有特定值,第二个,自定义视图操作,用于设置新值。
一个简单的测试示例,使用它们只是为了了解它们的工作原理:
@Test
fun testSlider() {
onView(withId(R.id.sliderRating)).check(matches(withValue(1.0F)))
onView(withId(R.id.sliderRating)).perform(setValue(2.0F))
onView(withId(R.id.sliderRating)).check(matches(withValue(2.0F)))
}
此测试首先检查滑块是否具有值 1.0,然后将其值更改为 2.0 并使用匹配器检查值现在是否为 2.0。
我在 kotlin 中有代码,但如果你需要它在 java 中,它可以很容易地转换(android studio 可以做到)。由于问题没有标注语言不知道你需要哪一个,下次标注吧
如何对滑块执行操作(移动光标)?
如何检查滑块值?
这个有现成的函数吗?
滑块看起来像这样:
<com.google.android.material.slider.Slider
android:id="@+id/sliderRating"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stepSize="1"
android:valueFrom="1.0"
android:valueTo="5.0" />
和 Espresso 检查:onView(withId(R.id.sliderRating)).check( -> TODO <- )
很容易创建几个方法来做到这一点。
这是我的资料:
fun withValue(expectedValue: Float): Matcher<View?> {
return object : BoundedMatcher<View?, Slider>(Slider::class.java) {
override fun describeTo(description: Description) {
description.appendText("expected: $expectedValue")
}
override fun matchesSafely(slider: Slider?): Boolean {
return slider?.value == expectedValue
}
}
}
fun setValue(value: Float): ViewAction {
return object : ViewAction {
override fun getDescription(): String {
return "Set Slider value to $value"
}
override fun getConstraints(): Matcher<View> {
return ViewMatchers.isAssignableFrom(Slider::class.java)
}
override fun perform(uiController: UiController?, view: View) {
val seekBar = view as Slider
seekBar.value = value
}
}
}
第一个,自定义视图匹配器,用于测试 Slider
是否具有特定值,第二个,自定义视图操作,用于设置新值。
一个简单的测试示例,使用它们只是为了了解它们的工作原理:
@Test
fun testSlider() {
onView(withId(R.id.sliderRating)).check(matches(withValue(1.0F)))
onView(withId(R.id.sliderRating)).perform(setValue(2.0F))
onView(withId(R.id.sliderRating)).check(matches(withValue(2.0F)))
}
此测试首先检查滑块是否具有值 1.0,然后将其值更改为 2.0 并使用匹配器检查值现在是否为 2.0。
我在 kotlin 中有代码,但如果你需要它在 java 中,它可以很容易地转换(android studio 可以做到)。由于问题没有标注语言不知道你需要哪一个,下次标注吧