您的位置:首頁>正文

安卓程式師都懂:如何用Espresso對UI介面測試?

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

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

基本測試

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

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

在預設視窗層次結構之外測試視圖

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

測試一個AdapterView

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

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

下面是一個簡單的例子,

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

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

測試一個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的例子:

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

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

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

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

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

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

Custom Matcher & FailureHandler

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

1.Custom Matcher

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

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

使用這個匹配器:

2.Custom Failure Handler

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

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

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

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

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

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

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

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示