Espresso環境搭建及其基本使用

一、創建待測試項目

在Android Studio環境下創建了一個EspressoDemo項目,作爲下面測試的項目。僅爲演示,所以只添加了一個啓動頁MainActivity.

compileSdkVersion 23
buildToolsVersion 23.0.3
  • 1
  • 2
minSdkVersion 8
targetSdkVersion 23
  • 1
  • 2
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView view = new TextView(this);
        view.setText("Espresso");
        setContentView(view);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

二、配置環境

1.設置測試環境 
爲了更好的測試,建議關閉測試機的系統動畫。將 設置->開發者選項 中的以下幾項設置爲 關閉動畫

  • 窗口動畫縮放
  • 過渡動畫縮放
  • 動畫程序時長縮放

2.在app的build.gradle文件的 defaultConfig 中添加編譯配置

testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'

3.在app的build.gradle文件的 android 中添加如下代碼避免編譯時的License衝突

packagingOptions { 
    exclude 'LICENSE.txt'
}
  • 1
  • 2
  • 3

4.在app的build.gradle文件的 dependencies 中引入依賴包

compile 'com.android.support:appcompat-v7:23.4.0'

// Android Testing Support Library's runner and rules
androidTestCompile 'com.android.support.test:runner:0.5'

// Espresso UI Testing
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

// Resolve conflicts between main and test APK:
androidTestCompile 'com.android.support:support-annotations:23.4.0'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

三、創建測試類

1.剛創建的待測試項目中現在只有一個啓動頁MainActivity,所以創建一個測試MainActivity頁面的測試類MainActivityTest,所在目錄爲app\src\androidTest\java\包名\MainActivityTest.java。

import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.LargeTest;

import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

/**
 * 測試 MainActivity
 */
@RunWith(AndroidJUnit4.class) //
@LargeTest //
public class MainActivityTest {
    @Rule //指定待測試的Activity
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(
            MainActivity.class);
    @Test //測試用例的測試方法皆適用此註解
    public void testTextViewDisplay(){
        onView(withText("Espresso")).check(matches(isDisplayed()));
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

2.註解的意思見註釋

四、運行測試方法一

這種一次只能測試一個測試用例是否通過。

1.選中待測試方法,鼠標右鍵選擇 run ‘選中的方法名’開始測試

這裏寫圖片描述

2.在AndroidStudio底部的Run窗口,進度條顯示爲綠色,表示運行通過。

這裏寫圖片描述

五、運行測試方法二

此種方法可以一次將項目中的所有測試用例都執行一遍,並生成測試報告。在要發佈版本時,可以直接測試整個項目,不用像方法一那樣只能測試一個,效率低下。並且,生成的報告也可以拷貝出來長期保存。

1.在AndroidStudio中打開命令窗口 Terminal,確認路徑在自己的項目根路徑下,執行以下命令。

gradlew connectedAndroidTest
  • 1

執行成功後,在輸出內容的最下面會顯示:

BUILD SUCCESSFUL
Total time:22.63 secs
  • 1
  • 2

當然,總耗時根據每個項目的具體情況和設備性能都不一樣。 
同時,這裏有個坑給大家說一下,也是我遇到的,在執行這個批處理命令時,要保證你的測試機當前不處於休眠狀態,否則無法完成本輪測試。原因是自動化測試也會生成頁面,若果手機處於休眠狀態,Activity就無法加載到手機屏幕上啊!!!

2.等待執行成功並完成所有測試用例後即可查看結果。 
生成的報告位於 app\build\reports\androidTest\connected目錄下,查看的時候可以選中index.html,鼠標右鍵,在 Open in Browser 中選擇一款自己中意的瀏覽器即可看到測試報告。

這裏寫圖片描述

大家測一看到,tests顯示測試用例數,爲5個,花費時間3.068秒,正確率100%,還有包名com.favor.espressodemo。點擊包名會顯示所有的測試類。

這裏寫圖片描述

點擊某個測試類,會顯示當前測試類中的測試用例列表,每一列包含了測試用例名、是否通過和花費時長。

這裏寫圖片描述

至此,環境搭建以及基本用法就介紹完了,大家要了解的話最好自己親手操作一下,要了解更多的知識的話,建議大家到Espresso官網上閱讀一下說明文檔,當然,文檔是英文的。中文的話,比較詳細的參考Android自動化測試-從入門到入門系列文章,在此向這位有水平有耐心的大神Anchorer表示感謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章