Android Espresso(UI自動化測試)的搭建

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. 運行測試用例,查看運行結果.

相關文章
相關標籤/搜索