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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试

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

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

功能性測試包括模擬用戶操作之類的組件驗證。例如開發(fā)者可以通過功能性測試來驗證在用戶執(zhí)行了UI操作之后Activity是否啟動了Activity。

如要為Activity創(chuàng)建功能性測試,測試類應(yīng)當(dāng)繼承ActivityInstrumentationTestCase2。與ActivityUnitTestCase不同,ActivityInstrumentationTestCase2既可以與Android系統(tǒng)通信,又能使程序可以接收鍵盤輸入事件與屏幕點擊事件。

驗證功能行為

一般功能性測試可能會有以下測試目的:

  • 驗證在某個UI控制器被按下后,目標(biāo)Activity是否被啟動。
  • 驗證目標(biāo)Activity是否將在啟動之前的用戶輸入數(shù)據(jù)正確顯示。

開發(fā)者所實現(xiàn)的代碼可能如下:

@MediumTest public void testSendMessageToReceiverActivity() {final Button sendToReceiverButton = (Button) mSenderActivity.findViewById(R.id.send_message_button);final EditText senderMessageEditText = (EditText) mSenderActivity.findViewById(R.id.message_input_edit_text);// Set up an ActivityMonitor...// Send string input value...// Validate that ReceiverActivity is started...// Validate that ReceiverActivity has the correct data...// Remove the ActivityMonitor... }

測試框架會等待ReceiverActivity啟動,否則的話將會在超時后返回null。如果ReceiverActivity啟動,那么ActivityMonitor則會收到一個命中。開發(fā)者可以通過斷言方法來驗證ReceiverActivity是否被啟動,命中數(shù)是否會如所期望的那樣有所增長。

設(shè)置ActivityMonitor

如果需要監(jiān)視Activity,可以注冊ActivityMonitor。當(dāng)目標(biāo)Activity啟動時,系統(tǒng)會通知ActivityMonitor一個事件。如果目標(biāo)Activity啟動,那么ActivityMonitor的計數(shù)器則會更新。

一般使用ActivityMonitor應(yīng)當(dāng)執(zhí)行以下步驟:

  • 1.通過getInstrumentation()方法獲得用于測試的Instrumentation實例。
  • 2.通過Instrumentation的addMonitor()重載方法將Instrumentation.ActivityMonitor的實例添加到當(dāng)前的instrumentation中,具體的匹配規(guī)則可由IntentFilter或者類名指定。
  • 3.等待被監(jiān)視的Activity啟動。
  • 4.驗證監(jiān)視器的數(shù)字增長。
  • 5.移除監(jiān)視器。

例如:

// Set up an ActivityMonitor ActivityMonitor receiverActivityMonitor =getInstrumentation().addMonitor(ReceiverActivity.class.getName(),null, false); // Validate that ReceiverActivity is started TouchUtils.clickView(this, sendToReceiverButton); ReceiverActivity receiverActivity = (ReceiverActivity) receiverActivityMonitor.waitForActivityWithTimeout(TIMEOUT_IN_MS); assertNotNull("ReceiverActivity is null", receiverActivity); assertEquals("Monitor for ReceiverActivity has not been called",1, receiverActivityMonitor.getHits()); assertEquals("Activity is of wrong type",ReceiverActivity.class, receiverActivity.getClass()); // Remove the ActivityMonitor getInstrumentation().removeMonitor(receiverActivityMonitor);

使用Instrumentation發(fā)送鍵盤事件

如果Activity含有EditText,可能需要測試用戶是否可以對其輸入數(shù)據(jù)。

一般來說,要發(fā)送字符串到EditText,應(yīng)當(dāng):

  • 1.在runOnMainSync()方法中運行requestFocus()同步方法,這樣會使UI線程一直等待接收焦點。
  • 2.調(diào)用waitForIdleSync()方法使主線程變?yōu)榭臻e狀態(tài)。
  • 3.通過sendStringSync()方法發(fā)送一條字符串給EditText。

例如:

// Send string input value getInstrumentation().runOnMainSync(new Runnable() {@Overridepublic void run() {senderMessageEditText.requestFocus();} }); getInstrumentation().waitForIdleSync(); getInstrumentation().sendStringSync("Hello Android!"); getInstrumentation().waitForIdleSync();

總結(jié)

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

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