日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方开发文档Training系列课程中文版:Activity测试之UI组件测试

發布時間:2024/7/5 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方开发文档Training系列课程中文版:Activity测试之UI组件测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-ui-testing.html

一般來說,正因為Activity含有UI組件,所以使得用戶可以與程序交互。這節課將會介紹如何測試Activity中的Button組件。在課程學習之后便可以使用相同的方法對其它UI組件進行測試。

Note:這節課中所涉及的UI測試被稱為白盒測試,因為開發者本身持有被測試的源代碼。Android設備框架適用于UI組件的白盒測試。另一種測試類型被稱為黑盒測試,因為不能夠得到程序的源代碼,故此得名。這種測試適用于與其它APP或系統交互的測試情況。黑盒測試在這里并不會涵蓋。有關更多如何執行黑盒測試的相關內容,請參見UI測試指南。

創建UI測試用例

雖然Activity運行于UI線程,但是測試程序本身是運行在子線程中的。這意味著,雖然TestAPP可以引用UI線程的對象,但是如果要更改這些對象的屬性或者發送事件給UI線程,那么將會得到一個WrongThreadException錯誤。

為了可以安全的發送Intent到Activity或者在UI線程中運行測試方法,開發者可以使測試類繼承于ActivityInstrumentationTestCase2類。

設置測試先決條件

當為UI測試設置先決條件時,則需要在setUp()方法中指定TouchMode。設置TouchMode為true可以使后面的測試方法在自動化點擊UI組件時防止真正點擊(例如,測試Button只是調用了它的onclick方法)。另外要確保在調用getActivity()方法之前調用了setActivityInitialTouchMode()方法。

例如:

public class ClickFunActivityTestextends ActivityInstrumentationTestCase2 {...@Overrideprotected void setUp() throws Exception {super.setUp();setActivityInitialTouchMode(true);mClickFunActivity = getActivity();mClickMeButton = (Button) mClickFunActivity.findViewById(R.id.launch_next_activity_button);mInfoTextView = (TextView) mClickFunActivity.findViewById(R.id.info_text_view);} }

添加測試方法

一般需要測試的點會包含以下部分:

  • 當Activity啟動時,驗證Button的布局是否顯示正確。
  • 驗證TextView在初始化時是否是隱藏的。
  • 驗證Button按下后,TextView上的文本是否變為了期望的值。

下面將會演示如何測試以上部分:

驗證Button的布局參數

開發者可能需要以下代碼來驗證Button的布局是否正確:

@MediumTest public void testClickMeButton_layout() {final View decorView = mClickFunActivity.getWindow().getDecorView();ViewAsserts.assertOnScreen(decorView, mClickMeButton);final ViewGroup.LayoutParams layoutParams =mClickMeButton.getLayoutParams();assertNotNull(layoutParams);assertEquals(layoutParams.width, WindowManager.LayoutParams.MATCH_PARENT);assertEquals(layoutParams.height, WindowManager.LayoutParams.WRAP_CONTENT); }

在調用assertOnScreen()方法時,應當將rootView以及需要驗證的View傳遞進去。如果需要驗證的View沒有在rootView中出現,那么判斷方法會拋出一個AssertionFailedError異常。

開發者還可以通過Button的布局參數來驗證Button的布局是否正確,然后通過判斷方法來驗證Button的高寬是否是期望中的值。

@MediumTest注解說明了這個測試方法應當如何分類。如何分類取決于測試方法的執行時間。

驗證TextView的布局參數

開發者也可能需要通過以下代碼來驗證TextView在初始化時是否是隱藏的:

@MediumTest public void testInfoTextView_layout() {final View decorView = mClickFunActivity.getWindow().getDecorView();ViewAsserts.assertOnScreen(decorView, mInfoTextView);assertTrue(View.GONE == mInfoTextView.getVisibility()); }

開發者可以通過getDecorView()方法獲得Activity的DecorView引用。DecorView在布局層級中屬于最高等級的ViewGroup.

驗證Button的行為

開發者可以根據以下測試方法來驗證在Button按下后TextView是否變為可見狀態。

@MediumTest public void testClickMeButton_clickButtonAndExpectInfoText() {String expectedInfoText = mClickFunActivity.getString(R.string.info_text);TouchUtils.clickView(this, mClickMeButton);assertTrue(View.VISIBLE == mInfoTextView.getVisibility());assertEquals(expectedInfoText, mInfoTextView.getText()); }

為了可以自動點擊Button,需要調用clickView()方法。該方法需要傳入測試用例的引用以及對應Button的引用。

Note: 輔助類TouchUtils提供了一些用于模擬交互的簡單方法,開發者可以使用這些方法來模擬點擊,拖拽等事件。

Note: TouchUtils中的方法用于從測試線程向UI線程中發送事件。開發者最好不要在UI線程中直接調用TouchUtils的相關方法,否則會引起WrongThreadException異常.

測試注解

以下注解可以用來標明測試方法的大小:

  • @SmallTest

  • @MediumTest

  • @LargeTest

一般來說,一個只有幾毫秒的剪短測試一般應該標為@SmallTest。稍長一點的,大概100毫秒左右的,通常應該標為@MediumTest或@LargeTest,測試的執行時間通常取決于是否需要訪問本地資源或者網絡資源。

開發者應當通過注解來標記測試方法,以便更好的組織、運行測試。

總結

以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:Activity测试之UI组件测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。