一、創建待測試項目
在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表示感謝。