Android 測試應用
Android Studio 以簡化測試為設計宗旨。 您只需完成幾次點擊,便可建立一個在本地 JVM 上運行的 JUnit 測試,或建立一個在設備上運行的儀器測試。
當然,您也可以通過集成測試框架來擴展測試能力,例如可以集成 Mockito 在本地單元測試中測試 Android API 調用,以及集成 Espresso 或 UI Automator 在儀器測試中演練用戶交互。
您可以利用 Espresso 測試記錄器自動生成 Espresso 測試。
此頁面提供的基本信息介紹了如何在 Android Studio 中新增和運行測試。
如需更完整的測試編寫方法指南,請參閱測試入門指南。
測試類型和位置
測試代碼的位置取決於您要編寫的測試的類型。 Android Studio 為以下兩種測試類型提供了源代碼目錄(源集):
Advertisements
本地單元測試
位於
module-name/src/test/java/
。這些測試在計算機的本地 Java 虛擬機 (JVM) 上運行。 當您的測試沒有 Android 框架依賴項或當您可以模擬 Android 框架依賴項時,可以利用這些測試來盡量縮短執行時間。
在運行時,這些測試的執行對象是去掉了所有
final
修飾符的修改版android.jar
。 這樣一來,您就可以使用 Mockito 之類的常見模擬庫。儀器測試
位於
module-name/src/androidTest/java/
。這些測試在硬體設備或模擬器上運行。 這些測試有權訪問
Instrumentation
API,讓您可以獲取某些信息(例如您要測試的應用的Context
), 並且允許您通過測試代碼來控制受測應用。 可以在編寫集成和功能 UI 測試來自動化用戶交互時,或者在測試具有模擬對象無法滿足的 Android 依賴項時使用這些測試。Advertisements
由於儀器測試內置於 APK 中(與您的應用 APK 分離),因此它們必須擁有自己的
AndroidManifest.xml
文件。 不過,由於 Gradle 會自動在構建時生成該文件,因此它在您的項目源集中不可見。 您可以在必要時(例如需要為 `minSdkVersion` 指定其他值或註冊測試專用的運行偵聽器時)添加自己的清單文件。 構建應用時,Gradle 會將多個清單文件合併成一個清單。
Gradle 構建解讀這些測試源集的方式與其解讀項目應用源集的方式相同,您可以利用這一點根據構建變體創建測試。
當您新建項目或添加應用模塊時,Android Studio 會創建以上所列的測試源集,並在每個源集中加入一個示例測試文件。
您可以在 Project 窗口中看到它們,如圖 1 所示。
圖 1. 您的項目的 (1) 儀器測試和 (2) 本地 JVM 測試在 Project
視圖(左側)或 Android 視圖(右側)中均可見。
添加一個新測試
要創建一個本地單元測試或儀器測試,您可以按照以下步驟新建針對特定類或方法的測試:
打開包含您想測試的代碼的 Java 文件。
點擊您想測試的類或方法,然後按 Ctrl+Shift+T (⇧⌘T)。
在出現的菜單中,點擊 Create New Test。
在 Create Test 對話框中,編輯任何欄位並選擇任何要生成的方法,然後點擊 OK。
在 Choose Destination Directory 對話框中,點擊與您想創建的測試類型對應的源集:androidTest 對應於儀器測試,test 對應於本地單元測試。
然後點擊 OK。
您也可以按如下所述在相應測試源集中創建一個通用 Java 文件:
在左側的 Project 窗口中,點擊下拉菜單並選擇 Project 視圖。
展開相應的模塊文件夾和嵌套的 src 文件夾。 要添加本地單元測試,請展開 test 文件夾和嵌套的 java 文件夾;要添加儀器測試,請展開 androidTest 文件夾和嵌套的 java 文件夾。
右鍵點擊 Java 軟體包目錄並選擇 New > Java Class。
命名文件,然後點擊 OK。
此外,請務必在應用模塊的 build.gradle
文件中指定測試庫依賴項:
dependencies { // Required for local unit tests (JUnit 4 framework) testCompile 'junit:junit:4.12' // Required for instrumented tests androidTestCompile 'com.android.support:support-annotations:24.0.0' androidTestCompile 'com.android.support.test:runner:0.5'}
如需了解其他可選庫依賴項以及有關如何編寫測試的詳細信息,請參閱構建本地單元測試和構建儀器單元測試。
創建適用於構建變體的儀器測試
如果您的項目包括的構建變體具有唯一的源集,則您可能需要相應的儀器測試源集。
在源集中創建與您的構建變體對應的儀器測試有助於保持測試代碼的條理性,也便於您只運行適用於給定構建變體的測試。
要添加適用於您的構建變體的測試源集,請執行以下步驟:
在左側的 Project 窗口中,點擊下拉菜單並選擇 Project 視圖。
在相應模塊文件夾內,右鍵點擊 src 文件夾,然後點擊 New > Directory。
輸入「androidTestVariantName」作為目錄名稱。例如,如果您的構建變型名為「MyFlavor」,則目錄名稱應為「androidTestMyFlavor」。
然後點擊 OK。 1. 右鍵點擊新目錄,然後點擊 New > Directory。 1. 輸入「java」作為目錄名稱,然後點擊 OK。
現在您就可以按照以上新增測試的步驟向這個新源集添加測試了。 當您到達 Choose Destination Directory 對話框時,選擇新的變體測試源集。
src/androidTest/
源集中的儀器測試由所有構建變體共享。 構建適用於應用的「MyFlavor」變體的測試 APK 時,Gradle 會將 src/androidTest/
和 src/androidTestMyFlavor/
這兩個源集合併。
例如,下表顯示的就是儀器測試文件所在源集路徑與應用代碼源集路徑的對應關係。
應用類的路徑 | 對應儀器測試類的路徑 |
---|---|
src/main/java/Foo.java | src/androidTest/java/AndroidFooTest.java |
src/myFlavor/java/Foo.java | src/androidTestMyFlavor/java/AndroidFooTest.java |
Gradle 構建會合併和替換來自不同測試源集的文件,這與它對應用源集的處理方法完全相同。 在本例中,「androidTestMyFlavor」源集中的 AndroidFooTest.java
文件會替換「androidTest」源集中的版本。
如需了解有關源集合併方法的詳細信息,請參閱配置構建。
您應該為應用和測試源集使用構建變體的另一個原因是,通過模擬依賴項創建封閉測試。 也就是說,您可以為應用創建一個包含依賴項模擬實現(例如慣常不穩定的網路請求或設備感測器數據)的產品風味,然後添加一個對應的模擬測試源集。
如需了解詳細信息,請參閱有關利用產品風味進行封閉測試的博文。
運行測試
要運行測試,請執行如下操作:
點擊工具欄中的 Sync Project
,確保您的項目已與 Gradle 同步
。 1. 以下列其中一種方式運行測試: * 在 Project 窗口中,右鍵點擊測試,然後點擊 Run
*在代碼編輯器中,右鍵點擊測試文件中的某個類或方法,然後點擊**Run**<img src="/studio/images/buttons/toolbar-run.png"class="inline-icon">
來測試該類中的所有方法。 * 要運行所有測試,右鍵點擊測試目錄,然後點擊 Run tests
。
默認情況下,您的測試運行時使用的是 Android Studio 默認的運行配置。 如果您想更改某些運行設置(例如儀器運行器和部署選項),可以在 Run/Debug Configurations 對話框中編輯運行配置(點擊 Run > Edit Configurations)。
更改測試構建類型
默認情況下,所有測試均針對調試構建類型運行。 您可以利用模塊級 build.gradle
文件中的 testBuildType
屬性將其更改為其他構建類型。
例如,如果您想針對「staging」構建類型運行測試,請按下面這段代碼中所示對該文件進行編輯。
android { ... testBuildType "staging"}