Android 開發(fā) 谷歌UI測(cè)試框架(Espresso)
官網(wǎng):https://developer.android.com/training/testing/espresso/index.html
核心 API 小巧曹傀、可預(yù)測(cè)添瓷、易于學(xué)習(xí)并且依然保持對(duì)定制的開放狡门。Espresso 測(cè)試清晰的描述異常、交互和斷言涝动,而沒有樣板內(nèi)容、自定義基礎(chǔ)設(shè)施或凌亂的實(shí)現(xiàn)細(xì)節(jié)的干擾炬灭。
Espresso 測(cè)試運(yùn)行非炒姿冢快!它會(huì)在應(yīng)用 UI 處于靜止時(shí)對(duì)其進(jìn)行操作和斷言重归,而使你遠(yuǎn)離了等待米愿、同步、睡眠以及后臺(tái)輪)鼻吮。
配置測(cè)試環(huán)境
在應(yīng)用的 build.gradle 文件添加
dependencies中
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
設(shè)置 instrumentation runner 在 ?android.defaultConfig? 下添加
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Android Studio 3.0.1中默認(rèn)是配置好的 不需要自己添加
我們先來(lái)創(chuàng)建第一個(gè)測(cè)試,讓項(xiàng)目先跑起來(lái)
EspressoTest1Activity.java
public class EspressoTest1Activity extends BaseActivity {
@BindView(R.id.espress_test1_tv)
TextView espressTest1Tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_espresso_test1);
ButterKnife.bind(this);
showBack();
}
}
開始學(xué)習(xí)各類UI的測(cè)試
先來(lái)看看提供了哪些方法
https://google.github.io/android-testing-support-library/downloads/espresso-cheat-sheet-2.1.0.pdf
基礎(chǔ)
Espresso 組件介紹
Espresso : 與識(shí)圖交互的切入點(diǎn),參考
onView
和onData
. 也暴露了與任何視圖都沒有必要聯(lián)系的API (比如pressBack
)ViewMatchers : 實(shí)現(xiàn)了
Matcher<? super View>
接口的對(duì)象集合,你可以在onView
方法中傳入一個(gè)或者多個(gè)此類對(duì)象來(lái)在當(dāng)前的視圖結(jié)構(gòu)中定位一個(gè)視圖;ViewActions : 可以作為參數(shù)出入
ViewInteraction.perform()
方法中的ViewAction
的集合(比如click()
).ViewAssertions : 可以作為參數(shù)傳入
ViewInteraction.check()
方法中的
ViewAssertion
的集合,通常,你會(huì)使用帶有視圖匹配器的匹配斷言來(lái)判斷當(dāng)前被選中視圖的狀態(tài);
簡(jiǎn)單的說(shuō)
- ViewMachers:尋找用來(lái)測(cè)試的View育苟。
- ViewActions:發(fā)送交互事件。
- ViewAssertions:檢驗(yàn)測(cè)試結(jié)果椎木。