Android 簡易 UITest part1 - Espresso 別人沒講的依賴 與 簡易用法

Android, Espresso, UiAutomator,  6.0 M Permission, UI Test

今天來介紹一下 Android UI Test 相關介紹

目前我所使用的是Espresso與UiAutomator兩種

Espresso:

  • 依賴方式:
android {
    defaultConfig { 
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
}
dependencies {
    //Espresso相關依賴
    androidTestCompile 'com.android.support:support-annotations:24.1.1'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support.test:rules:1.0.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.0'
    
    //@標籤使用的依賴
    androidTestImplementation 'androidx.test:core:1.1.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test:runner:1.1.0'

}

我使用的是

com.android.support:appcompat-v7:26.0.2

其他版本請斟酌調整依賴版本

  • 語法由三個部分組成:
  1. ViewMachers:尋找View (通常使用R.id)
  2. ViewActions: 執行交互事件 (例如: click(), TypeText(String)等...)
  3. ViewAssertions:檢驗測試結果 (withText(String) 驗證字串等...)
  • 建構方式: 
public class EspressoTest {

    @Rule  //測試代碼開始之前啟用的活動 (這裡是明確當下Activity,使用ActivityTestRule類)
    public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class);

    @Before
    public void onStart() {
        //在執行@Berfore之前會初始化規則,並經過(onCreate, onStart, onResume)
        //開始測試之前會執行,通常用於初始化物件等。
    }
    @Test
    public void onTest() {
         //正式進入UI Test 的活動
    try {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //這裡是執行Activity中轉跳Fragment的Method
            mActivityTestRule.getActivity().toFragment(HomeFragment.newInstance());
            //進入HomeFragment 頁面

            //ViewMachers onView 尋找所需要找的View 通常使用Rid (這裡找的是一個Button元件)
            onView(withId(R.id.home_start))
            //ViewActions perform 與該View交互作用 (這裡是指按下該Button元件)
                    .perform(click())
            //ViewAssertions check 驗證該元件字體是否為"isClick"
                    .check(ViewAssertions.matches(ViewMatchers.withText("isClick")));
        }
    } catch (UiObjectNotFoundException e) {
        e.printStackTrace();
    }

    }

    @After
    public void onFinish() {
        //經過每個@Test方法之後被調用
        //測試結束後所要執行Method
        //執行完畢後會經過,活動將被銷毀(onPause,onStop,onDestroy)
    }

}

以上是簡易的使用介紹,詳細規則用法請搜尋相關文章!

歡迎留言討論!

相關文章:

Android UITest part2- UiAutomator 簡介 與 實現6.0 M 權限彈窗操控