Android ProviderTestCase2

先前講過Activity Test, Unit Test, Service Test,

此篇來探討如何對Database做自動化測試.

由於Database為Android API 相關的測試, 需將測試檔案放於module-name/src/androidTest/java/ 路徑下.

(請參閱 Android App Test 基本概念)


Android ServiceTestCase

此篇主要試探討如何測試Android Service Class.

若測試中和Android API較無關係的話, 我們可將測試檔案放於module-name/src/test/java/ 路徑下.

若與Android API 相關的測試, 需將測試檔案放於module-name/src/androidTest/java/ 路徑下.

(請參閱 Android App Test 基本概念)

在此篇我們使用Wifi 開關來做例子, 與Android API 相關,

所以需將測試檔案放於module-name/src/androidTest/java/ 路徑下


Android InstrumentationTestCase Part II

對於Android 單元測試來說, 若滿足以下測試條件, 可選用 ActivityInstrumentationTestCase2 (Function Test) 來測試

(1) 針對單一Activity 測試, 不涉及其他Activity交互作用.
(2) 對UI進行自動化測試
(3) 可對裝置使用程式來模擬輸入, 點擊 等UI 事件.

ActivityUnitTestCase (Unit Test) 的最大不同點為: 可對裝置使用程式來模擬輸入, 點擊 等UI 事件.


Android SingleLaunchActivityTestCase

對於Android 單元測試來說, 若滿足以下測試條件, 可選用 SingleActivityTestCase 來測試

(1) 針對單一Activity 測試, 不涉及其他Activity交互作用.
如startActivityForResult 的返回結果做測試.
(2) 對UI進行自動化測試
(3) 只需要一次初始化 (setUp()) 與結束 (tearDown()), 亦即每個測試項目不會重複執行 setUp() 與 tearDown()

此測試類別和 ActivityUnitTestCase 相似, 只差在 ActivityUnitTestCase的每個測試項目會重複執行 setUp() 與 tearDown()

請參閱 Android ActivityUnitTestCase

@UiThreadTest 的順序會根據命名來決定順序


Android ActivityUnitTestCase

對於Android 單元測試來說, 若滿足以下測試條件, 可選用 ActivityUnitTestCase 來測試

(1) 針對單一Activity 測試, 不涉及其他Activity交互作用.
如startActivityForResult 的返回結果做測試.
(2) 對UI進行自動化測試

(祖父類別 InstrumentationTestCase 參考資料: Android InstrumentationTestCase)


Android Local Unit Test

針對Android 單元測試中, 對於不需要測試實機環境的函數時, 我們可用 Local Unit Test 的方式來測試.

(請參閱 Android App Test 基本概念)

在談到如何建立測試之前, 首先先了解 JUnit 的測試順序.


Android App Test 基本概念

依據測試, 可分為單元測試 (Unit Test) 與整合測試 (Integration Test) 兩大類.

再細分為

  • Unit Test
    Local Unit Test: 適用於和Android API 較無相關性的測試
    Instrumented Test: 與Android API 有相關性的測試
  • Integration Test
    Components within your app only: 功能整合性測試
    Cross-app Components: 整體App測試