簡體   English   中英

Androidx:如何在 UI 測試(Espresso)中測試 Slider?

[英]Androidx : How to test Slider in UI tests (Espresso)?

如何在 slider(移動光標)上執行操作?

如何檢查 slider 值?

是否有任何現有的功能?

Slider 看起來像這樣:

<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" />

和濃縮咖啡檢查: 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)))
}

該測試首先檢查 slider 的值是否為 1.0,然后將其值更改為 2.0,並使用匹配器檢查該值現在是否為 2.0。

我在 kotlin 中有代碼,但如果你在 java 中需要它,它可以很容易地轉換(android studio 可以做到)。 由於問題沒有用語言標記,我不知道您需要哪一種,下次標記它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM