Android單元測試-對View的測試
前提概要
前兩篇文章分別介紹了單元測試的作用和關於Activity的單元測試,有興趣或者剛入門的讀者可以閱讀以下前兩篇文章:
Android單元測試-作用以及簡單示例
Android單元測試-對Activity的測試
這篇文章對應Activity中View的測試做一個專門的擴充。
主要三個元件(類)
ViewMatchers
這個類中有對View的各種屬性的判斷方法,比如可以判斷id,判斷是否獲取焦點,text內容為什麼之類。
主要有兩種作用,一是可以通過它獲取到介面中的一個特定的View,二是可以通過它對獲取到的View進行屬性的斷言,判斷View的屬性是否正確。
ViewActions
這個物件能讓View進行各種操作,比如點選操作,長按操作等。
主要作用是檢視View在進行某種操作後是否執行了正確的邏輯。
ViewAssertions
這個物件主要是和ViewMatchers 配合使用,用來判斷獲取到的View的屬性是否正確。比如text是否與預期的相等,當下是否是可見的。
基本使用示例
如圖主要有一個TextView和一個ListView,測試程式碼如下:
public class MainActivity extends AppCompatActivity {
private TextView tvMain;
private ListView lvMain;
private final String[] listString= {
"11111","22222","33333","44444","55555"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
tvMain=(TextView)findViewById(R.id.tv_main);
lvMain=(ListView)findViewById(R.id.lv_main);
tvMain.setText("mainTextView");
lvMain.setAdapter(new ArrayAdapter<>(this,R.layout.item_text_view,listString));
lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, ((TextView)view).getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
public class viewTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule =
new ActivityTestRule<>(MainActivity.class);
@Test
public void testTextView(){
onView(withId(R.id.tv_main))
.check(matches(withText("mainTextView")));
}
@Test
public void testListView(){
onView(allOf(withId(R.id.tv_test),withText("22222")))
.perform(click());
}
}
TextView主要是查詢到這個TextView的id,然後對比一下它的Text是否是“mainTextView”。如果不是的話Test會直接fail。
ListView的測試中如果只通過id查詢顯然是不合適的,因為listView中的每一個item都是相同的佈局,所以可以通過allOf()這個方法進行多個條件的查詢,我們查詢到這個item的id下的text為“22222”的View,然後再執行點選操作。
功能擴充
三個元件使用非常簡單,但是功能也不僅如此,每個類的可使用性都很強,如下羅列各個方法的Reference的連結供讀者參考。
ViewMatchers
ViewActions
https://developer.android.google.cn/reference/android/support/test/espresso/action/ViewActions.html
ViewAssertions
相關文章
- Android單元測試-對Activity的測試Android
- 測試 之Java單元測試、Android單元測試JavaAndroid
- Android - 單元測試Android
- android單元測試Android
- [Android] 單元測試Android
- 單元測試:單元測試中的mockMock
- Android單元測試與模擬測試詳解Android
- Android 單元測試實踐Android
- 關於 Android 單元測試Android
- Android單元測試(一):前言Android
- [Android]單元測試例項Android
- jest對react單元測試框架React框架
- Android自動化測試入門(四)單元測試Android
- 前端測試:Part II (單元測試)前端
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- Android單元測試(3):JUnit 的使用Android
- [iOS單元測試系列]單元測試編碼規範iOS
- [android]android自動化測試十之單元測試例項Android
- 單元測試 - 測試場景記錄
- Go 單元測試之mock介面測試GoMock
- 測試氣味-整潔單元測試
- Flutter 單元測試Flutter
- Go單元測試Go
- 單元測試工具
- iOS 單元測試iOS
- 前端單元測試前端
- golang 單元測試Golang
- PHP 單元測試PHP
- phpunit單元測試PHP
- JUnit單元測試
- unittest單元測試
- Junit 單元測試.
- 單元測試真
- golang單元測試Golang
- SAP CDS view單元測試框架Test Double介紹View框架
- 黑盒測試、白盒測試、單元測試、整合測試、系統測試、驗收測試的區別與聯絡...
- PHP 單元測試與資料庫測試PHP資料庫
- 如何測試 Flutter 應用? ー 單元測試Flutter