安卓程式設計師:如何用Espresso測試UI介面

趙鈺瑩發表於2018-05-07

  如果想學習使用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介面

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

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2154063/,如需轉載,請註明出處,否則將追究法律責任。

相關文章