安卓程序員都懂:如何用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程序之後,我們需要這樣設置它:
這就是如何為不同的組件編寫基本的測試用例。作者希望這篇文章能夠激勵程序員為應用程序編寫測試用例。起初,這可能是困難的,但一旦掌握了它,將是非常有用的。
你認為這份教程怎麼樣呢?如果你有更好的想法,歡迎在評論區留言!
TAG:IT168企業級 |