在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 測(cè)試相關(guān) API
monkeyrunner 簡介
Android 測(cè)試教程(14):ActivityInstrumentationTestCase2 示例
ApplicationTestCase 示例
Android 測(cè)試教程(13):TestCase 示例
ActivityInstrumentationTestCase2 示例
測(cè)試 Activity
測(cè)試項(xiàng)目
Android 測(cè)試教程(12):ServiceTestCase 示例
測(cè)試相關(guān) API
Monkey 命令行工具
第一個(gè)測(cè)試項(xiàng)目 HelloWorldTest
測(cè)試 Content Provider
Android 測(cè)試教程(11):ActivityUnitTestCase 示例
測(cè)試基礎(chǔ)
AndroidTestCase 示例
測(cè)試 Service

測(cè)試相關(guān) API

Android 的測(cè)試框架相關(guān)的 API 主要定義在三個(gè)包中:

  • android.test 用于編寫 Android 測(cè)試用例
  • android.test.mock 定義了方便測(cè)試用的測(cè)試“樁”類
  • android.test.suitebuilder 運(yùn)行測(cè)試用例的 Test Runner 類

Android 測(cè)試 API 是基于 JUnit 擴(kuò)展而來,并添加了與 Android 平臺(tái)相關(guān)的測(cè)試 API。

JUnit

你可以直接使用 JUnit 中相關(guān) API 編寫一些和平臺(tái)無關(guān)的測(cè)試用例(基于 TestCase), Android 測(cè)試 API 中提供了一個(gè) TestCase 的子類 AndroidTestCase ,可以用來編寫一些 Android 相關(guān)的對(duì)象的測(cè)試用例,AndroidTestCase 支持一些和平臺(tái)相關(guān)的 setup,teardown 以及 setup 方法。

你也可以直接使用 JUnit 的 Assert 方法 顯示測(cè)試結(jié)果,這些 Assert 方法可以通過比較預(yù)期的值和實(shí)際的值,如果不同可以排除異常。Android 測(cè)試 API 擴(kuò)展了一些 Assert 方法用于支持和 Android 平臺(tái)相關(guān)的比較。

要注意的是,Android 測(cè)試 API 支持 JUnit 3 代碼風(fēng)格,而不支持 JUnit 4 代碼風(fēng)格,也只能使用 InstrumentationTestRunner 來運(yùn)行測(cè)試用例。

Instrumentation

Android 的 Instrumentation 提供了一些“鉤子”方法連接到 Android 操作系統(tǒng)中,可以獨(dú)立控制 Android 組件(Activity,Service 等)的生命周期,并可以控制 Android 如何調(diào)用一個(gè)應(yīng)用。

在通常情況下(普通的 Android 應(yīng)用),Android 的 activity,Service 等的生命周期是由 Android 操作系統(tǒng)來控制的。 比如一個(gè) Activity 的生命周期開始于 onCreate (由某個(gè) Intent 激活),然后是 onResume. 可以參見 Android 簡明開發(fā)教程五:Activities。 應(yīng)用程序本身無法直接控制這些生命周期狀態(tài)的切換。但使用 Instrumatation API 時(shí)你可以直接調(diào)用這些方法。

Instrumentation API 也可以支持強(qiáng)制某個(gè)應(yīng)用和另一個(gè)已經(jīng)在運(yùn)作的應(yīng)用運(yùn)行在同一個(gè)進(jìn)程中,這在通常的情況下是不可能實(shí)現(xiàn)的。

使用 Instrumentation API 你可以直接調(diào)用 Activity 或是 Service 的生命周期回調(diào)函數(shù),從而可以讓你運(yùn)行一步一步的運(yùn)行 Activity 或是 Service 的生命周期函數(shù)。如下例顯示了如何使用 Instrumentation API 來測(cè)試 Activity 保持和恢復(fù) State。


    // Start the main activity of the
    // application under test
    mActivity = getActivity();

    // Get a handle to the Activity object's
    //main UI widget, a Spinner
    mSpinner
    = (Spinner)mActivity
     .findViewById(com.android.example.spinner.R.id.Spinner01);

    // Set the Spinner to a known position
    mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);

    // Stop the activity - The onDestroy()
    //method should save the state of the Spinner
    mActivity.finish();

    // Re-start the Activity - the onResume()
    //method should restore the state of the Spinner
    mActivity = getActivity();

    // Get the Spinner's current position
    int currentPosition = mActivity.getSpinnerPosition();

    // Assert that the current position is the
    //same as the starting position
    assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);

其中關(guān)鍵的一個(gè)方法是 getActivity(),只有調(diào)用 getActivity() 后被測(cè)試的 activity 才會(huì)啟動(dòng)。此外 Instrumentation API 允許把測(cè)試項(xiàng)目和被測(cè)試的應(yīng)用項(xiàng)目運(yùn)行到同一個(gè)進(jìn)程中,從而在測(cè)試代碼中可以直接調(diào)用被測(cè)試應(yīng)用的方法和訪問其成員。

Test case 相關(guān)類

Android 提供了多個(gè)由 Testcase 或 Assert 派生而來的子類以支持 Android 平臺(tái)相關(guān)的 setup,teardown 和其它輔助方法。

  • AndroidTestCase 為一 Android 平臺(tái)下通用的測(cè)試類,它支持所有 JUnit 的 Assert 方法和標(biāo)準(zhǔn)的 setUp 和 tearDown 方法,并可以用來測(cè)試 Android permission 。
  • 組件相關(guān)的測(cè)試類如測(cè)試 activity, Content provider ,Service 相關(guān)的測(cè)試類,Android 沒有提供單獨(dú)的用來測(cè)試 BroadcastReceiver 的測(cè)試類,而是可以通過發(fā)送 Intent 對(duì)象來檢測(cè) Broadcast Receiver 的反應(yīng)結(jié)果來測(cè)試 BroadcastReceiver。
  • ApplicationTestCase 可以用來測(cè)試 Application 對(duì)象。
  • InstrumentationTestCase 如果你要使用 Instrumentation API,那么你必須使用 InstrumentationTestCase 或其子類。

Assertion classes

Android 測(cè)試中可以使用 JUnit 中提供的 Assert 方法來顯示測(cè)試結(jié)果。除此之外,Testing API 還提供了 MoreAsserts 和 ViewAsserts 類。其中 MoreAsserts 支持更多的比較方法包括 RegEx(正則)比較等。ViewAsserts 可以用來校驗(yàn) UI View。

Mock object classes

android.test.mock 包中定義一些測(cè)試“樁”類,如 MockApplication,MockContentProvider ,MockContext,MockCursor, MockPackagManager 等用例幫助測(cè)試。

后面將具體介紹如何使用這些 API 來編寫測(cè)試用例。