編輯:關於Android編程
原文地址:http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html
功能性測試包括模擬用戶操作之類的組件驗證。例如開發者可以通過功能性測試來驗證在用戶執行了UI操作之後Activity是否啟動了Activity。
如要為Activity創建功能性測試,測試類應當繼承ActivityInstrumentationTestCase2。與ActivityUnitTestCase不同,ActivityInstrumentationTestCase2既可以與Android系統通信,又能使程序可以接收鍵盤輸入事件與屏幕點擊事件。
一般功能性測試可能會有以下測試目的:
驗證在某個UI控制器被按下後,目標Activity是否被啟動。 驗證目標Activity是否將在啟動之前的用戶輸入數據正確顯示。開發者所實現的代碼可能如下:
@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則會收到一個命中。開發者可以通過斷言方法來驗證ReceiverActivity是否被啟動,命中數是否會如所期望的那樣有所增長。
如果需要監視Activity,可以注冊ActivityMonitor。當目標Activity啟動時,系統會通知ActivityMonitor一個事件。如果目標Activity啟動,那麼ActivityMonitor的計數器則會更新。
一般使用ActivityMonitor應當執行以下步驟:
1.通過getInstrumentation()方法獲得用於測試的Instrumentation實例。 2.通過Instrumentation的addMonitor()重載方法將Instrumentation.ActivityMonitor的實例添加到當前的instrumentation中,具體的匹配規則可由IntentFilter或者類名指定。 3.等待被監視的Activity啟動。 4.驗證監視器的數字增長。 5.移除監視器。例如:
// 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);
如果Activity含有EditText,可能需要測試用戶是否可以對其輸入數據。
一般來說,要發送字符串到EditText,應當:
1.在runOnMainSync()方法中運行requestFocus()同步方法,這樣會使UI線程一直等待接收焦點。 2.調用waitForIdleSync()方法使主線程變為空閒狀態。 3.通過sendStringSync()方法發送一條字符串給EditText。例如:
// Send string input value getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { senderMessageEditText.requestFocus(); } }); getInstrumentation().waitForIdleSync(); getInstrumentation().sendStringSync("Hello Android!"); getInstrumentation().waitForIdleSync();
一加手機與錘子手機一直以來備受關注,近日陸續傳出一加2與錘子2的消息,而且兩者都選在7月28日同一天舉行手機發布會,是不是覺得很有趣?那麼,一加手機2和錘子
(1)在res--menu目錄下的main.xml文件
上節學習了如何在手機內部存儲中讀寫文件,本節學習如何在手機的外部存儲中讀寫文件。那就是如何在Sdcard中讀寫文件。那我們還是用以前登錄界面的例子舉例說明,(登錄界面請看
先上效果圖吧點擊加號勾選需要的應用點擊添加這裡出現了三種item的樣式,一種是加號,一種是應用圖標加文字,最後一種是應用圖標加文字還有個checkBox 這裡R