Espresso是Google官方提供的Android UI自動化測試的框架.java
爲何叫Espresso(濃咖啡),好像是想讓Android碼農們輕鬆的寫完自動化用例後能享受着咖啡,看着自動化測試"飛".android
這是Espresso官方的地址.另外,也推薦你們看這個YouTube上關於Espresso環境搭建的短視頻.git
Espresso環境搭建github
下面將基於Android Studio,介紹如何搭建Espresso.app
1. 在Android Studio中新建一個Project;框架
2. 修改Project中App/build.gradle腳本;測試
主要修改3處:gradle
1) 在defaultConfig內增長,testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner",用來運行腳本;ui
2) 增長packagingOptions,避免編譯時候Liscens的衝突;google
3) 在dependencies中增長Espresso相關的引用;
解釋一下exclude group: 'javax.inject',若是項目中有用Dagger或者Dagger2的話(Dagger是一個好東西),不加這行會編譯失敗的.
apply plugin: 'com.android.application'
android {
compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "com.example.yezhenrong.myapplication" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'LICENSE.txt' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1'
// Espresso 相關的引用 compile 'com.android.support:support-annotations:22.1.1' androidTestCompile 'com.android.support:support-annotations:22.1.1' androidTestCompile('com.android.support.test.espresso:espresso-core:2.1'){ exclude group: 'javax.inject' } androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.1' androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.1' androidTestCompile 'com.android.support.test:runner:0.2' }
3. 添加Espresso的TestRunner.
1) 點擊頂欄菜單Run->Edit Configurations;
2) 出現以下的窗口後,點擊左上角的"+",選擇"Android Tests";
3) 修改新Configuration的名字,選中App Module,輸入Runner,選擇"Show chooer dialog".
點擊"OK"完成!
4. 新建測試用例了類.
在app/androidTest/java下新建一個類,好比以下圖MainActivityTest.class,這個就是咱們具體的測試用例的類了.
5. 開始寫測試用例了.
1) 首先建立一個@Rule,ActivityTestRule用來指明被測試的Activity;
2) 測試用例的方法都是@Test的Annotation註解的,方法名字能夠隨意.
還能夠寫setup()和tearDown()方法.
沒錯,Espresso的測試框架就是基於Junit的.
3) 測試方法testTextViewDisplay()裏面:
... import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withText; @RunWith(AndroidJUnit4.class) public class MainActivityTest { @Rule public ActivityTestRule mActivityRule = new ActivityTestRule(MainActivity.class); @Test public void testTextViewDisplay() { onView(withText("Hello world!")).check(ViewAssertions.matches(isDisplayed())); } }
onView(withText("Hello world!")).check(ViewAssertions.matches(isDisplayed()));
這行代碼都是顧名思義就能猜出意義,大概意思是根據"Hello world!"找到指定的view,而後檢查這個view是否isDisplayded(可見).
Espresso提供的UI自動化的API很豐富,這裏有個簡單的他們類的層級關係.
Espress推薦寫測試用例的時候使用static import來簡化代碼.在Android Studio中,static import的快捷鍵是,當你輸入了"onView",而後按鍵盤的Alt+Enter會出現一個菜單選static import那個就搞定了!(以下圖)
6. 運行測試用例,查看運行結果.