當前位置:
首頁 > 知識 > 安卓程序員都懂:如何用Espresso對UI界面測試?

安卓程序員都懂:如何用Espresso對UI界面測試?

如果想學習使用Espresso測試Android應用程序UI,需要了解包括基礎知識,AdapterViews,RecyclerViews等方面的知識,本文將是一份不錯的教程。

作者寫了關於Espresso的基礎知識,以及如何設置和使用。介紹了一些編寫測試用例時可能需要的基本測試,如何測試不屬於默認窗口層次的視圖,同時測試AdapterViews&RecyclerViews。最後,介紹如何編寫自定義匹配器和失敗處理程序。

基本測試

先來看看可能需要寫的一些常見測試:

安卓程序員都懂:如何用Espresso對UI界面測試?

按照上面的模式,根據要求編寫測試用例:

在默認窗口層次結構之外測試視圖

可能有幾種情況需要測試不屬於默認窗口層次結構的視圖。例如,測試可能使用WindowManager呈現的視圖:

安卓程序員都懂:如何用Espresso對UI界面測試?

測試一個AdapterView

現在繼續進行AdapterView測試。為了測試AdapterView,Espresso提供了一個單獨的onData()入口,在對其本身或其子進行任何操作之前,首先對適配器項目進行測試。如果要測試一個AdapterView,需要使用onData()方法而不是onView()方法。

安卓程序員都懂:如何用Espresso對UI界面測試?

可以在中找到可用的ObjectMatcher,DataOptions,ViewAction和ViewAssertion的完整列表。

下面是一個簡單的例子,找到一個匹配單詞"Espresso"的String類型列表項並對它執行click()事件:

安卓程序員都懂:如何用Espresso對UI界面測試?

下面的例子將找到具有內容"item content:10"的列表項目,並且在其具有id R.id.item_id的子視圖上執行點擊事件:

安卓程序員都懂:如何用Espresso對UI界面測試?

測試一個RecyclerView

由於RecyclerView對象的行為與AdapterView對象的行為不同,所以不能使用onData()來測試RecyclerView對象。

如果要測試RecyclerView,需要添加espresso-contrib包依賴項。這個軟體包包含一個RecyclerViewActions的集合,可以使用它來滾動到位置或對這些項目執行操作。

要使用Espresso與RecyclerView進行交互,可以使用espresso-contrib軟體包(在app / build.gradle中添加"com.android.support.test.espresso:espresso-contrib:2.2.2"依賴項) RecyclerViewActions可用於滾動到位置或對項目執行操作。該集合包括以下RecylerViewActions:

·scrollTo() - 此RecyclerViewActions滾動到匹配的視圖。

·scrollToHolder() - 此RecyclerViewActions滾動到匹配的視圖持有者。

·scrollToPosition() - 此RecyclerViewActions滾動到一個特定的位置。

·actionOnHolderItem() - 此RecyclerViewActions在匹配的View Holder上執行View Action。

·actionOnItem() - 此RecyclerViewActions在匹配的View上執行View Action。

·actionOnItemAtPosition() - 此RecyclerViewActions在特定位置的視圖上執行ViewAction。

我們來看一個測試RecyclerView的例子:

安卓程序員都懂:如何用Espresso對UI界面測試?

上面的例子將首先找到ID為R.id.rv_espresso的RecyclerView,然後滾動到第五個位置並在該項目上執行一個單擊事件。

同樣,我們也可以使用其他的RecyclerViewActions。

現在看看如何測試一個自定義RecyclerView,例如ExpandableRecyclerView。考慮一下,當需要測試可展開視圖的子視圖的情況。

首先,編寫一個可以執行的自定義操作:

安卓程序員都懂:如何用Espresso對UI界面測試?

現在,在子視圖上執行這個操作:

安卓程序員都懂:如何用Espresso對UI界面測試?

現在來看看如何編寫和使用Custom Matcher和Custom Failure Handler。

Custom Matcher & FailureHandler

在編寫測試用例時,可能需要實現Custom Matcher或者Custom Failure Handler,因為在某些情況下,預設的處理器可能不足夠。

1.Custom Matcher

有些情況下,默認的可用匹配器可能是不夠的。在這種情況下,需要編寫我們自己的匹配器。考慮一個情況,當需要檢查EditText中的文本是否與正則表達式匹配時,由於沒有默認的匹配器做這個工作,所以需要程序員自己實現。

我們來看看如何編寫一個用於驗證模式的Custom Matcher

安卓程序員都懂:如何用Espresso對UI界面測試?

使用這個匹配器:

安卓程序員都懂:如何用Espresso對UI界面測試?

2.Custom Failure Handler

有些情況下,我們可能想要處理一些Espresso拋出的異常,並自定義一些實現,比如記錄一些可能更有意義的額外數據。

安卓程序員都懂:如何用Espresso對UI界面測試?

在已經寫了一個custom failure handler程序之後,我們需要這樣設置它:

安卓程序員都懂:如何用Espresso對UI界面測試?

這就是如何為不同的組件編寫基本的測試用例。作者希望這篇文章能夠激勵程序員為應用程序編寫測試用例。起初,這可能是困難的,但一旦掌握了它,將是非常有用的。

你認為這份教程怎麼樣呢?如果你有更好的想法,歡迎在評論區留言!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

黃金跳槽期快到了,一個優秀程序員的簡歷應該怎麼寫?

TAG:IT168企業級 |