簡體   English   中英

Android:如何使用 Espresso 在 EditTextPreference 上執行點擊操作

[英]Android: How to perform click action on EditTextPreference using Espresso

我是 UI 測試的新手,尤其是使用 Espresso。 在我的用例中,我需要檢查應用程序是否接受PreferenceScreen片段內的EditTextPreference上的輸入文本,但在此之前我需要執行單擊以顯示編輯對話框,然后輸入文本。

這是首選項片段具有編輯小部件的方式:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <EditTextPreference
        android:key="@string/pref_stream_target_key"
        android:title="@string/pref_stream_target_label"
        app:useSimpleSummaryProvider="true" />

    <EditTextPreference
        android:key="@string/pref_stream_resolution_key"
        android:title="@string/pref_stream_resolution_label"
        app:useSimpleSummaryProvider="true" />

    <EditTextPreference
        android:key="@string/pref_stream_bitrate_key"
        android:title="@string/pref_stream_bitrate_label"
        app:useSimpleSummaryProvider="true" />

    <EditTextPreference
        android:key="@string/pref_stream_framerate_key"
        android:title="@string/pref_stream_framerate_label"
        app:useSimpleSummaryProvider="true" />

    <EditTextPreference
        android:key="@string/pref_stream_peerlatency_key"
        android:title="@string/pref_stream_peerlatency_label"
        app:useSimpleSummaryProvider="true" />

</PreferenceScreen>

這就是我嘗試執行點擊的方式

with(launchFragmentInContainer<StreamSettingsFragment>()) {
    onFragment { fragment ->
        Espresso.onData(PreferenceMatchers.withTitle(R.string.pref_stream_target_label))
            .perform(ViewActions.click())
    }
}

我不確定是否需要進行單擊操作以檢查EditTextPreference中更改偵聽器背后的邏輯。

使用它運行測試只會讓應用程序保持運行並且什么都不做。 有什么我想念的嗎?

刪除onFragment位 - 這樣您就可以在主線程上以同步方式直接與 Fragment 交互。 Espresso 設計用於測試線程並自行處理與 UI 的同步:

launchFragmentInContainer<StreamSettingsFragment>()

onData(withTitle(R.string.pref_stream_target_label)).perform(ViewActions.click())

暫無
暫無

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

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