在 Android Studio 中進行測試

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Android Studio 旨在簡化測試作業。其中包含許多功能,可簡化您建立、執行及分析測試的方式。您可以設定在本機電腦上執行的測試,或是在裝置上執行的設備測試。您可以在一個或多個裝置上輕鬆執行單一測試或一組特定測試。測試結果會顯示在 Android Studio 中。

圖 1. Android Studio 顯示的測試結果總覽。

本頁說明如何在 Android Studio 中管理測試。如要瞭解如何編寫自動化的 Android 測試,請參閱在 Android 上測試應用程式

測試類型和位置

測試的位置取決於您編寫的測試類型。Android 專案具備用於本機單元測試和設備測試的預設原始碼目錄。

本機單元測試位於module-name/src/test/java/。這些是在機器的本機 Java 虛擬機器 (JVM) 上執行的測試。如果測試沒有 Android 架構依附元件,或在您可以為 Android 架構依附元件建立測試替身的情況下,使用這些測試可以盡量減少執行時間。如要進一步瞭解如何編寫本機單元測試,請參閱建構本機單元測試

設備測試位於 $module-name/src/androidTest/java/。這些測試透過硬體裝置或模擬器執行。其已接入Instrumentation API,可讓您存取資訊,例如Context類別,以及透過測試程式碼控管受測試的應用程式。設備測試建構在獨立的 APK 中,因此各自擁有AndroidManifest.xml檔案。系統會自動產生這個檔案,但您可以在 $module-name/src/androidTest/AndroidManifest.xml 建立專屬的版本,系統會將其與產生的資訊清單進行整合。在編寫整合和功能性 UI 測試以自動執行使用者互動時,或測試包含無法為其建立測試替身的 Android 依附元件時,使用設備測試。如要進一步瞭解如何編寫設備測試,請參閱建構設備測試自動化 UI 測試

您可以將測試放入建構變數的特定目錄,並僅測試特定建構變化版本。舉例來說,您可以將一些本機單元測試放在 $module-name/src/testMyFlavor/java/ 中,以便測試以此變種版本的原始碼建構的應用程式。如要進一步瞭解如何建立這些量身打造的測試,請參閱為建構變化版本建立設備測試

當您建立新專案或新增應用程式模組時,Android Studio 會建立上述的測試來源集,並在每個專案中包含範例測試檔案。您可在「Project」(專案) 視窗中看到這些資料,如圖 2 所示。

圖 2. 專案的 (1) 設備測試和 (2) 本機 JVM 測試會顯示在「Project」(專案) 檢視畫面中 (左側) 或「Android」檢視畫面 (右側)。

建立新的測試

您可以按照以下這些步驟,從原始碼開始為特定類別或方式直接添加新測試:

  1. 開啟包含要測試程式碼的來源檔案。
  2. 將遊標移至要測試的類別或方法名稱上,然後按下 Ctrl + Shift + T (macOS 為 Command + Shift + T)。
  3. 在顯示的彈出式視窗中,按一下「Creat New Test…」(建立新測試…)
  4. 在「Create Test」(建立測試) 對話方塊中選擇「JUnit4」,編輯要產生的欄位和方法,然後按一下「OK」
  5. 在「Choose Destination Directory」(選擇目的地目錄) 對話方塊中,按一下與您要建立之測試類型對應的來源集:設備測試對應「androidTest」或本機單元測試對應「test」。然後按一下「OK」

您也可以在適當的測試來源組合中建立一般化測試檔案,如下所示:

  1. 在左側的「Project」(專案) 視窗中,點選下拉式選單並選取「Android」檢視畫面。
  2. 在「java」目錄上按一下滑鼠右鍵,然後選取「New」(新增) >「Java Class」(Java 類別) 或「New」(新增) >「Kotlin Class/File」(Kotlin 類別/檔案)。您也可以選取「java」目錄,並使用快速鍵 Control + N (macOS 為 Command + N)。
  3. 在「Choose Destination Directory」(選擇目的地目錄) 對話方塊中,按一下與您要建立之測試類型對應的來源集:設備測試對應「androidTest」或本機單元測試對應「test」。然後按一下「OK」
  4. 為檔案命名,然後按一下「OK」

如果您的應用程式在新增測試後沒有進行編譯,請確認您已設定正確的測試程式庫依附元件。請參閱建構本機測試建構設備測試,瞭解正確的依附元件。

執行測試

執行任何測試之前,請先按一下工具列中的「Sync Project」(同步專案) ,確認專案與 Gradle 完全同步。您可以針對不同的精細程度執行測試:

  • 如要在目錄或檔案中執行所有測試,請開啟「Project」(專案) 視窗,然後執行下列其中一項操作:

    • 在目錄或檔案上按一下滑鼠右鍵,然後按一下「Run」(執行)
    • 選取目錄或檔案,並使用快速鍵 Control + Shift + R
  • 如要在類別或特定方法中執行所有測試,請在程式碼編輯器中開啟測試檔案,然後執行下列任一操作:

    • 按下 Gutter 圖示執行測試
    • 在測試類別或方法上按一下滑鼠右鍵,然後按一下「Run」(執行)
    • 選取測試類別或方法,然後使用快速鍵 Control + Shift + R

設備測試會在實體裝置或模擬器上執行。如要進一步瞭解如何設定實體裝置,請參閱在硬體裝置上執行應用程式。如要進一步瞭解如何設定模擬器,請參閱在 Android Emulator 上執行應用程式

設定測試執行作業

根據預設,您的測試會使用 Android Studio 的預設執行設定執行。如要變更某些執行設定 (例如檢測執行器和部署選項),您可以在「Run/Debug Configurations」(執行/偵錯設定) 對話方塊 (按一下「Run」(執行) >「Edit Configurations」(編輯設定) 編輯執行設定。

統合 Gradle 測試執行器

Android Gradle 外掛程式 7.1.0 版和 Android Studio Bumblebee 以上版本會使用 Gradle 本身的 Android 設備測試執行器來執行設備測試。無論您是透過指令列使用 AGP 執行測試 (例如在持續整合伺服器上),或是透過 Android Studio 進行測試,只要使用相同的測試執行器,都有可能獲得一致的結果。

圖 3. 統合的 Gradle 測試執行器。

先前的 Android Studio 版本使用 IntelliJ Android 設備測試執行器,而非 Gradle 的 Android 檢測設備測試執行器。因此,如果您並非使用最新版 Android Studio,則視您是透過 Android Studio 或使用 Gradle 外掛程式的指令列執行測試而定,測試結果可能會有所不同,例如使用某個執行器時通過測試,但使用另一個執行器時未通過測試。

圖 4. 舊版 Android Studio 中的不同測試執行器。

如果您已將設備測試設定儲存至專案,系統將會在已連結的裝置上使用 Gradle 執行測試。您可以使用測試類別或方法旁邊的 Gutter 動作建立新的設備測試設定,如下所示。

圖 5. 用 Gutter 圖示執行測試。

執行設備測試時,您可以在 Gradle 工作輸出的測試矩陣中檢查測試輸出內容,確認 Android Studio 有使用 Gradle 測試執行器。

停用統合 Gradle 測試執行器

根據預設,Android Studio Bumblebee 會使用 Gradle 執行設備測試。如果您遇到問題,可以按照下列步驟停用這項行為:

  1. 依序選取「File」(檔案) >「Settings」(設定) >「Build, Execution, Deploument」(建構、執行、部署) >「Testing」(測試)。(如果使用 macOS,則依序選取「Android Studio」 >「Preferences」(偏好設定) >「Build, Execution, Deployment」(建構、執行、部署) >「Testing」(測試)
  2. 取消勾選「Run Android instrumented tests using Gradle」(使用 Gradle 執行 Android 設備測試) 旁邊的方塊,然後按一下「OK」

在 Android Studio 外部執行測試時,您也可以透過下列任一方式,還原至舊版行為:

  • 請使用下列指令列參數:-Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
  • 在專案的 gradle.properties 檔案中新增以下參數:android.experimental.androidTest.useUnifiedTestPlatform=false

為了協助解決您可能遇到的問題,請報告錯誤

在多個裝置上並行執行

根據預設,系統會對一項實體裝置或模擬器執行設備測試。如要查看測試在更多裝置上的行為,可以按以下步驟選取更多裝置:

  1. 在執行測試之前,開啟目標裝置下拉式選單,然後選取「Select Multiple Devices…」(選取多部裝置…)

    圖 6. 選取「Multiple Devices」(多部裝置) 下拉式選單。

  2. 選取所需的裝置,然後按一下「OK」

  3. 確認目標下拉式選單中的文字已變更為「Multiple Devices」(多部裝置),然後按一下「Run」(執行)

  4. 「Test Matrix」(測試矩陣) 工具視窗會顯示每個所選裝置設定的測試結果。

    圖 7. 在「Test Matrix」(測試矩陣) 工具視窗中測試結果。

  5. 您可以點選特定測試,在輸出窗格中檢查結果。您也可以點選各種資料欄來排序測試。

透過 Firebase Test Lab 執行

使用 Firebase Test Lab,可同時在許多常用的 Android 裝置和裝置設定 (包括語言代碼、螢幕方向、螢幕尺寸和平台版本的不同組合) 中測試應用程式。這些測試會在遠端 Google 資料中心的實體和虛擬裝置上執行。測試結果提供測試記錄檔,並列出所有應用程式故障的詳細資料。

如要開始使用 Firebase Test Lab,您需要完成下列步驟:

  1. 如果您還沒有帳戶,請 創建 Google 帳戶
  2. Firebase 控制台,按一下「Create New Project」(建立新專案)。在 Spark 方案的免付費每日配額內,您可免付費透過 Test Lab 測試應用程式。

Android Studio 提供整合式工具,可讓您設定如何將測試部署至 Firebase Test Lab。建立 Firebase 專案後,您可以建立測試設定並執行測試:

  1. 在主選單中依序按一下「Run」(執行) >「Edit Configurations」(編輯設定)
  2. 按一下「Add New Configuration」(新增設定) ,然後選取「Android Instrumented Tests」(Android 設備測試)
  3. 輸入或選取測試的詳細資料,例如測試名稱、模組類型、測試類型和測試類別。
  4. 在「Deployment Target Options」(Deployment 目標選項) 下方的「Target」(目標) 下拉式選單中,選取「Firebase Test Lab Device Matrix」(Firebase Test Lab 裝置矩陣)
  5. 如果尚未登入,請按一下「Sign in with Google」(使用 Google 帳戶登入),然後允許 Android Studio 存取您的帳戶。
  6. 在「Cloud Project」(Cloud 專案) 旁邊的清單中選取您的 Firebase 專案。
  7. 在「Matrix configuration」(矩陣設定)旁,從下拉式選單選取其中一個預設設定,或是按一下「Open Dialog」(打開對話方塊) 來自行建立 。您可以選取要用來測試應用程式的一或多個裝置、Android 版本、語言代碼和螢幕方向。Firebase Test Lab 會在產生測試結果時,利用您選取的所有組合來測試您的應用程式。
  8. 在「Run/Debug Configurations」(執行/偵錯設定) 對話方塊中按一下「OK」結束。
  9. 按一下「Run」(執行) 來執行測試

圖 8. 為 Firebase Test Lab 建立測試設定。

分析測試結果

Firebase Test Lab 完成測試後,「Run」(執行) 視窗會隨即開啟,並顯示結果 (如圖 9 所示)。您可能需要按一下「Show Passed」(顯示通過) 才能看到所有執行的測試。

圖 9. 使用 Firebase Test Lab 獲取的檢測設備測試結果。

您也可以在「Run」(執行) 視窗中,測試執行記錄的開頭找到連結,藉此在網路上分析測試內容。

查看測試涵蓋範圍

您可以使用測試涵蓋範圍工具,追蹤本機單元測試所涵蓋應用程式程式碼的百分比和範圍。使用測試涵蓋範圍工具,檢查是否已對組成應用程式的元素、類別、方法和程式碼進行了充分測試。

如要執行涵蓋範圍測試,請按照執行測試所述步驟操作,請不要按一下「Run」(執行) ,而是按一下「Run test-name with coverage」(執行涵蓋範圍的測試名稱) 。在「Project」(專案) 視窗中,這個選項可能會隱藏至「More Run/Debug」(更多執行/偵錯)。您也可以在「Run/Debug Configurations」(程式碼涵蓋率) 分頁下方的「Code Coverage」(執行/偵錯設定) 對話方塊中設定涵蓋範圍設定。

圖 10. 應用程式的程式碼涵蓋率百分比。

查看測試結果

您在 Android Studio 中執行一或多項測試時,結果會顯示在「Run」(執行) 視窗中。圖 11 顯示成功的測試執行。

圖 11. 測試結果會顯示在「Run」(執行) 視窗中。

「Run」(執行) 視窗的左側樹狀檢視會列出測試,並在右側輸出窗格中顯示目前測試套件的結果與訊息。使用工具列、內容選單和狀態圖示來管理測試結果時,如下所示:

  1. 使用執行工具列重新執行目前的測試、停止目前的測試、重新執行失敗的測試 (未顯示,因為僅可用於單元測試)、暫停輸出內容和傾倒執行緒。
  2. 使用測試工具列篩選測試結果並加以排序。您也可以展開或收合節點、顯示測試涵蓋範圍,以及匯入或匯出測試結果。
  3. 按一下內容選單以追蹤執行中的測試、顯示內嵌統計資料、捲動至堆疊追蹤、在例外狀況時開啟原始碼,自動捲動至來源,以及測試執行完成時選擇第一個失敗的測試。
  4. 測試狀態圖示會指出測試錯誤、遭忽略、失敗、通過、已暫停、終止或未執行。
  5. 在樹狀檢視中,右鍵按一下想查看的內容選單,即可在偵錯模式中執行測試、開啟測試原始碼檔案,或是跳到測試中的原始碼行。

分析測試失敗

當一或多個測試失敗時,結果視窗會顯示警告標誌和失敗次數 (例如,「測試失敗:1」):

圖 12. 輸出窗格中失敗測試的詳細資料。

在左側的樹狀檢視中點選失敗測試,右側的輸出窗格會顯示測試的詳細資料。可在實際值旁邊顯示預期值,方便您進行比較。按一下即可查看差異連結,開啟差異檢視畫面,方便您並列查看結果。

瞭解詳情

本頁面說明使用 Android Studio 建立及執行第一項測試時,需遵循的基本步驟。您也可以選擇透過指令列執行測試。您也可以參閱 IntelliJ 測試說明文件。如要進一步瞭解如何在建立更大型的測試套件時設定測試,請參閱「進階測試設定」。