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

測試 Activity

Activity 的測試非常依賴于 Android 的 Instrumation 框架,和 Android 其他組件不同的是,Activity 具有復(fù)雜的生命周期回調(diào)函數(shù)(如 onCreate, onStart 等) ,通常情況下除通過 Instrumation 接口外不能直接調(diào)用這些回調(diào)函數(shù)。

  • 測試 Activity 的基本測試類為 InstrumentationTestCase,它提供了 Instrumentation 接口給 TestCase 的子類。 為了支持 Activity 測試,InstrumentationTestCase 提供了下面功能:
  • 生命周期控制: 使用 Instrumentation,你可以啟動,暫停,中止被測試的 Activity。
  • Dependency Injection : Instrumentation 允許創(chuàng)建一些 Mock 對象如 Context,Application 來幫助測試 Activity,從而幫助你控制測試環(huán)境并和實(shí)際的應(yīng)用的其他部分隔離開來。你也可以定制一些 Intent 以啟動 Activity。
  • 用戶界面交互: 你可以使用 Instrumentation 向 UI 發(fā)送按鍵和觸摸事件。

下面幾個為主要的用于測試 Activity 由 TestCase 派生而來的測試類:

  • ActivityInstrumentationTestCase2 通常用于多個 Activity 的功能測試,它使用正常的系統(tǒng)框架來運(yùn)行 Activity(使用應(yīng)用程序本身),并使用正常系統(tǒng) Context (非 Mock)來測試 Activity 的功能。 允許你創(chuàng)建一些 Mock Intent 用來測試 Activity 的響應(yīng)。要注意的是,這種 TestCase 不允許使用 Mock 的 Context 和 Application 對象測試,也就是說你必須使用和應(yīng)用程序?qū)嶋H運(yùn)行的環(huán)境來測試。
  • ActivityUnitTestCase 通常用來測試單獨(dú) Activity。在啟動被測試的 Activity 之前,你可以 Inject 一個假的 Context 或是 Application ,使用這個 Mock 的 Context 中一個隔離環(huán)境中運(yùn)行被測試的 Activity。通常用于 Activity 的單元測試,而不和 Anroid 系統(tǒng)進(jìn)行交互。
  • SingleLaunchActivityTestCase 用于測試單個 Activity,和 ActivityUnitTestCase 不同的是,它只運(yùn)行 setUp 和 tearDown 一次,而不是在運(yùn)行 testCase 中每個 Test Method 前后運(yùn)行 setup 和 tearDown ,它可以保證運(yùn)行多個測試之間 fixture 不會被重置,從而可以用來測試一些有關(guān)聯(lián)的方法。

本篇和后面幾篇介紹 Activity,Service,Content Provider 測試的基本概念和相關(guān)類,之后則結(jié)合 ApiDemo->Tests 為例具體介紹這些類的用法。