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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

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

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

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

一般來(lái)說(shuō),正因?yàn)锳ctivity含有UI組件,所以使得用戶可以與程序交互。這節(jié)課將會(huì)介紹如何測(cè)試Activity中的Button組件。在課程學(xué)習(xí)之后便可以使用相同的方法對(duì)其它UI組件進(jìn)行測(cè)試。

Note:這節(jié)課中所涉及的UI測(cè)試被稱(chēng)為白盒測(cè)試,因?yàn)殚_(kāi)發(fā)者本身持有被測(cè)試的源代碼。Android設(shè)備框架適用于UI組件的白盒測(cè)試。另一種測(cè)試類(lèi)型被稱(chēng)為黑盒測(cè)試,因?yàn)椴荒軌虻玫匠绦虻脑创a,故此得名。這種測(cè)試適用于與其它APP或系統(tǒng)交互的測(cè)試情況。黑盒測(cè)試在這里并不會(huì)涵蓋。有關(guān)更多如何執(zhí)行黑盒測(cè)試的相關(guān)內(nèi)容,請(qǐng)參見(jiàn)UI測(cè)試指南。

創(chuàng)建UI測(cè)試用例

雖然Activity運(yùn)行于UI線程,但是測(cè)試程序本身是運(yùn)行在子線程中的。這意味著,雖然TestAPP可以引用UI線程的對(duì)象,但是如果要更改這些對(duì)象的屬性或者發(fā)送事件給UI線程,那么將會(huì)得到一個(gè)WrongThreadException錯(cuò)誤。

為了可以安全的發(fā)送Intent到Activity或者在UI線程中運(yùn)行測(cè)試方法,開(kāi)發(fā)者可以使測(cè)試類(lèi)繼承于ActivityInstrumentationTestCase2類(lèi)。

設(shè)置測(cè)試先決條件

當(dāng)為UI測(cè)試設(shè)置先決條件時(shí),則需要在setUp()方法中指定TouchMode。設(shè)置TouchMode為true可以使后面的測(cè)試方法在自動(dòng)化點(diǎn)擊UI組件時(shí)防止真正點(diǎn)擊(例如,測(cè)試Button只是調(diào)用了它的onclick方法)。另外要確保在調(diào)用getActivity()方法之前調(diào)用了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);} }

添加測(cè)試方法

一般需要測(cè)試的點(diǎn)會(huì)包含以下部分:

  • 當(dāng)Activity啟動(dòng)時(shí),驗(yàn)證Button的布局是否顯示正確。
  • 驗(yàn)證TextView在初始化時(shí)是否是隱藏的。
  • 驗(yàn)證Button按下后,TextView上的文本是否變?yōu)榱似谕闹怠?/li>

下面將會(huì)演示如何測(cè)試以上部分:

驗(yàn)證Button的布局參數(shù)

開(kāi)發(fā)者可能需要以下代碼來(lái)驗(yàn)證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); }

在調(diào)用assertOnScreen()方法時(shí),應(yīng)當(dāng)將rootView以及需要驗(yàn)證的View傳遞進(jìn)去。如果需要驗(yàn)證的View沒(méi)有在rootView中出現(xiàn),那么判斷方法會(huì)拋出一個(gè)AssertionFailedError異常。

開(kāi)發(fā)者還可以通過(guò)Button的布局參數(shù)來(lái)驗(yàn)證Button的布局是否正確,然后通過(guò)判斷方法來(lái)驗(yàn)證Button的高寬是否是期望中的值。

@MediumTest注解說(shuō)明了這個(gè)測(cè)試方法應(yīng)當(dāng)如何分類(lèi)。如何分類(lèi)取決于測(cè)試方法的執(zhí)行時(shí)間。

驗(yàn)證TextView的布局參數(shù)

開(kāi)發(fā)者也可能需要通過(guò)以下代碼來(lái)驗(yàn)證TextView在初始化時(shí)是否是隱藏的:

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

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

驗(yàn)證Button的行為

開(kāi)發(fā)者可以根據(jù)以下測(cè)試方法來(lái)驗(yàn)證在Button按下后TextView是否變?yōu)榭梢?jiàn)狀態(tài)。

@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()); }

為了可以自動(dòng)點(diǎn)擊Button,需要調(diào)用clickView()方法。該方法需要傳入測(cè)試用例的引用以及對(duì)應(yīng)Button的引用。

Note: 輔助類(lèi)TouchUtils提供了一些用于模擬交互的簡(jiǎn)單方法,開(kāi)發(fā)者可以使用這些方法來(lái)模擬點(diǎn)擊,拖拽等事件。

Note: TouchUtils中的方法用于從測(cè)試線程向UI線程中發(fā)送事件。開(kāi)發(fā)者最好不要在UI線程中直接調(diào)用TouchUtils的相關(guān)方法,否則會(huì)引起WrongThreadException異常.

測(cè)試注解

以下注解可以用來(lái)標(biāo)明測(cè)試方法的大小:

  • @SmallTest

  • @MediumTest

  • @LargeTest

一般來(lái)說(shuō),一個(gè)只有幾毫秒的剪短測(cè)試一般應(yīng)該標(biāo)為@SmallTest。稍長(zhǎng)一點(diǎn)的,大概100毫秒左右的,通常應(yīng)該標(biāo)為@MediumTest或@LargeTest,測(cè)試的執(zhí)行時(shí)間通常取決于是否需要訪問(wèn)本地資源或者網(wǎng)絡(luò)資源。

開(kāi)發(fā)者應(yīng)當(dāng)通過(guò)注解來(lái)標(biāo)記測(cè)試方法,以便更好的組織、運(yùn)行測(cè)試。

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。