Android程式測試(2)——Activity測試

來源:互聯網
上載者:User

與Content Provider測試、Service測試相比,Activity測試尤其離不開Android的測試架構(instrumentation framework),這是因為Android中的activities有著複雜的生命週期,而這些生命週期的各個階段都是基於回調方法的,而這些方法只能由Android的測試架構來直接調用,也就是說,在一個程式中,向UI發送事件的唯一方法就是通過Android的測試架構。

本文將根據官方文檔,來介紹一下怎樣進行activities測試。

在開始之前,有必要介紹一下與activity測試相關的類:

InstrumentationTestCase,該類是我們進行activities測試的基類,主要就是用來為我們進行activities測試使用的測試案例(test case)的子類提供測試instrumentation,具體對於activity測試,這個基類主要提供了如下的功能:

Activity的生命週期控制:通過InstrumentationTestCase提供的instrumentation,我們可以使用測試案例類來對要測試的activity進行start、pause和destroy。

依賴注入(dependency injection):Instrumentation允許我們建立和使用諸如Context和Application等的mock system objects來運行要測試的activity。這樣做的最大好處就是可以控制測試環境,並且讓要測試的activity與product環境相隔離。另外我們還可以自己寫intent,並通過這些intent來啟動activity。

UI互動:通過instrumentation,我們可以直接向要測試的activity的UI發送按鍵和觸屏事件。

通過繼承TestCase和Assert,activity測試類別也提供了JUnit測試架構。其中兩個主要的測試子類是:ActivityInstrumentationTestCase2和ActivityUnitTestCase。

ActivityInstrumentationTestCase2是被設計用來對一個程式中的一個activity或者多個activities進行功能性的測試。而被測試的activity通過使用標準的系統Context運行在獨立的測試程式執行個體中,並且我們可以向這寫activity來發送類比的intent,但我們並不能類比Context或者activity所在的Applications。

ActivityUnitTestCase這個類主要用來在一個隔絕的環境中來測試一個單獨的activity。在啟動這個activity之前,我們可以注入一個類比的Context或者Application,但我們不能向這個被測試的activity發送類比的intents。

MockApplication主要用來協助控制測試環境,只有在使用ActivityUnitTestCase這個測試案例類的時候才可使用。

ViewAsserts,主要用來定義斷言(assertion)

下面是進行activity測試的具體過程:

首先,根據SDK安裝目錄中的Spinner範例,建立一個android工程SpinnerActivity,作為被測試的工程。然後建立一個用於測試SpinnerActivity的測試工程,取名為SpinnerActivityTest,包名為SpinnerActivity的包名加上“.test”,測試的target選擇SpinnerActivity,關於如何建立一個工程的測試工程可以參看:

http://blog.csdn.net/yaolingrui/article/details/7360101

還有一種建立測試工程的方法就是:在建立被測試工程的時候同時建立測試工程,這是推薦的建立過程,這一部分可以參看官方文檔中的相關部分,官方文檔為:

http://developer.android.com/resources/tutorials/testing/activity_test.html 

建立好測試工程之後,測試工程中將搭建起了測試的基本架構,在測試工程的AndroidManifest.xml檔案中,將為我們自動添加上相關的測試資訊,包括指定被測試的程式,和使用android.test.runner類庫等。

在建立好測試工程之後,然後,就是在測試工程中建立

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.