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

鍍金池/ 教程/ Android/ ApplicationTestCase 示例
monkeyrunner 簡(jiǎn)介
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

ApplicationTestCase 示例

前面介紹了 Android 測(cè)試的一些理論知識(shí),從本篇開始的幾篇將結(jié)合 ApiDemoTest 示例來介紹 Android 測(cè)試的實(shí)例。在此之前可以參照 Android 測(cè)試教程(3):測(cè)試項(xiàng)目 創(chuàng)建 ApiDemos->tests 測(cè)試項(xiàng)目,本項(xiàng)目測(cè)試用來測(cè)試 ApiDemos,主要目的是介紹 Android 測(cè)試框架的使用方法。

當(dāng)然要測(cè)試 ApiDemos,事先要?jiǎng)?chuàng)建好項(xiàng)目 ApiDemos。下圖顯示了創(chuàng)建好 ApiDemos->Tests 后,ApiDemos->Tests 中所含的 Java 類:

http://wiki.jikexueyuan.com/project/android-test-course/images/9.1.jpg" alt="picture9.1" />

Android 測(cè)試項(xiàng)目也是一個(gè) Android 應(yīng)用項(xiàng)目,其基本使用方法和開發(fā)一般的 Android 應(yīng)用非常類似,Android 測(cè)試項(xiàng)目主要是利用 Android 測(cè)試框架編寫測(cè)試用例來測(cè)試對(duì)應(yīng)的 Android 應(yīng)用的各個(gè)方面。

其中 AllTests.java 定義如下:

    public class AllTests extends TestSuite {

     public static Test suite() {
     return new TestSuiteBuilder(AllTests.class)
     .includeAllPackagesUnderHere()
     .build();
     }
    }

使用 TestSuiteBuilder 指明所有該包和其子包中定義的 TestCase 都為最終 TestSuite 的一部分(需要被運(yùn)行的測(cè)試)。

AllTests.java 一般可以不用修改的應(yīng)用到大部分的測(cè)試項(xiàng)目中,如果有特殊需要,可以使用android.test.suitebuilder 的類定義那些 Testcase 需要包含到最終的測(cè)試包(Test Suite)中.

ApiDemosApplicationTests 測(cè)試介紹 ApplicationTestCase 的基本使用方法。

下圖為 ApplicationTestCase 的繼承關(guān)系:

http://wiki.jikexueyuan.com/project/android-test-course/images/9.2.jpg" alt="picture9.2" />

ApplicationTestCase 主要用來測(cè)試 Application 類,提供了對(duì) Application 類生命周期方法的基本支持,并可以支持一些 dependency injection 以幫助構(gòu)造測(cè)試 Application 的的環(huán)境。

Application Lifecycle 支持, 每個(gè) Application 運(yùn)行 都遵循一定的順序(生命周期方法),ApplicationTestCase 提供下面方法來支持對(duì) Application 生命周期方法的測(cè)試:

  • 只有當(dāng)測(cè)試用例調(diào)用 createApplication() 后才會(huì)執(zhí)行 Application 的 onCreate 方法,從而使得你有機(jī)會(huì)在調(diào)用 Application的onCreate 方法之前對(duì)測(cè)試框架做些調(diào)整。
  • 當(dāng)測(cè)試用例結(jié)束時(shí),測(cè)試用例的 tearDown 方法會(huì)被調(diào)用,然后會(huì)調(diào)用 Application 的 onDestroy() 方法停止和銷毀 Application.

Dependency Injection 每個(gè) Application 都依賴于運(yùn)行它的 Context 對(duì)象,Android 測(cè)試框架允許你注入一個(gè) Mock 的或者孤立的 context 對(duì)象,以實(shí)現(xiàn)真正的單元測(cè)試,如果只是想做一般的測(cè)試,你的 Application 方法將被注入全功能的 Context 對(duì)象,你可以使用 setContext 來注入你定義的 Mock 的 Context 對(duì)象,setContext 必須在 createApplication 之前調(diào)用。測(cè)試框架提供了如 MockContext, RenamingDelegatingContext, ContextWrapper 來幫助你構(gòu)造用于測(cè)試 Applicaton 的 Context 對(duì)象。

本例的代碼如下:

    public class ApiDemosApplicationTests
     extends ApplicationTestCase<ApiDemosApplication> {

     public ApiDemosApplicationTests() {
     super(ApiDemosApplication.class);
     }

     @Override
     protected void setUp() throws Exception {
     super.setUp();
     }

     @SmallTest
     public void testPreconditions() {
     }

     /**
     * Test basic startup/shutdown of Application
     */
     @MediumTest
     public void testSimpleCreate() {
     createApplication();
     }

    }

有幾個(gè)新知識(shí)

  1. @SmallTest 和 @MediumTest 標(biāo)注

Android 測(cè)試框架可以使用 @SmallTest,@MediumTest 和 @LargeTest 來標(biāo)注測(cè)試方法,這些分類劃分主要是根據(jù)測(cè)試訪問數(shù)據(jù)的位置,如本地,SD 卡,網(wǎng)絡(luò),下表為通常劃分測(cè)試等級(jí)的基本方法:

Feature Small Medium Large
Network access No localhost only Yes
Database No Yes Yes
File system access No Yes Yes
Use external systems No Discouraged Yes
Multiple threads No Yes Yes
Sleep statements No Yes Yes
System properties No Yes Yes
Time limit (seconds) 60 300 900+

2.testPreconditions

testPreconditions 測(cè)試主要用來運(yùn)行其它測(cè)試方法之前來校驗(yàn) Application 對(duì)象的初始化情況,和 setUp 類似,但和 setUp 不同的是,testPreconditions 只會(huì)被運(yùn)行一次,而 setUp 通常在執(zhí)行每個(gè)測(cè)試方法之前都會(huì)運(yùn)行一次,一般需把它做為 Application 第一個(gè)測(cè)試方法,但由于 JUnit 使用 Reflection 來取得測(cè)試方法,因此并不一定能保證 testPreconditions 一定在其它測(cè)試方法之前運(yùn)行。

testSimpleCreate 為測(cè)試 Application 的測(cè)試方法,調(diào)用 createApplication 會(huì)觸發(fā) Application 的onCreate 方法,測(cè)試結(jié)束后,執(zhí)行 tearDown ,然后調(diào)用 Application 的 onDestroy 方法,如果 Application 的 onCreate, onDestroy 運(yùn)行拋出異常的話,則本測(cè)試方法失敗,否則表示測(cè)試通過。

ApplicationTestCase 還提供了一個(gè) terminateApplication 中止 Application,可以測(cè)試 Application 的 onTerminate 方法。