Android Studio 以簡化測試為設計宗旨未状。 您只需完成幾次點擊按脚,便可建立一個在本地 JVM 上運行的 JUnit 測試泵督,或建立一個在設備上運行的儀器測試。
當然哥倔,您也可以通過集成測試框架來擴展測試能力秸架,例如可以集成 Mockito 在本地單元測試中測試 Android API 調用,以及集成 Espresso 或 UI Automator 在儀器測試中演練用戶交互咆蒿。
您可以利用 Espresso 測試記錄器自動生成 Espresso 測試东抹。
此頁面提供的基本信息介紹了如何在 Android Studio 中新增和運行測試。
如需更完整的測試編寫方法指南沃测,請參閱測試入門指南缭黔。
測試類型和位置
測試代碼的位置取決于您要編寫的測試的類型。 Android Studio 為以下兩種測試類型提供了源代碼目錄(源集):
本地單元測試
位于 module-name/src/test/java/蒂破。
這些測試在計算機的本地 Java 虛擬機 (JVM) 上運行馏谨。 當您的測試沒有 Android 框架依賴項或當您可以模擬 Android 框架依賴項時,可以利用這些測試來盡量縮短執(zhí)行時間附迷。
在運行時惧互,這些測試的執(zhí)行對象是去掉了所有 final 修飾符的修改版 android.jar。 這樣一來挟秤,您就可以使用 Mockito 之類的常見模擬庫。
儀器測試
位于 module-name/src/androidTest/java/抄伍。
這些測試在硬件設備或模擬器上運行艘刚。 這些測試有權訪問 Instrumentation API,讓您可以獲取某些信息(例如您要測試的應用的 Context)截珍, 并且允許您通過測試代碼來控制受測應用攀甚。 可以在編寫集成和功能 UI 測試來自動化用戶交互時箩朴,或者在測試具有模擬對象無法滿足的 Android 依賴項時使用這些測試。
由于儀器測試內(nèi)置于 APK 中(與您的應用 APK 分離)秋度,因此它們必須擁有自己的 AndroidManifest.xml 文件炸庞。 不過,由于 Gradle 會自動在構建時生成該文件荚斯,因此它在您的項目源集中不可見埠居。 您可以在必要時(例如需要為 minSdkVersion
指定其他值或注冊測試專用的運行偵聽器時)添加自己的清單文件。 構建應用時事期,Gradle 會將多個清單文件合并成一個清單滥壕。
Gradle 構建解讀這些測試源集的方式與其解讀項目應用源集的方式相同,您可以利用這一點根據(jù)構建變體創(chuàng)建測試兽泣。
當您新建項目或添加應用模塊時绎橘,Android Studio 會創(chuàng)建以上所列的測試源集,并在每個源集中加入一個示例測試文件唠倦。
您可以在 Project 窗口中看到它們称鳞,如圖 1 所示。
添加一個新測試
要創(chuàng)建一個本地單元測試或儀器測試稠鼻,您可以按照以下步驟新建針對特定類或方法的測試:
1> 打開包含您想測試的代碼的 Java 文件冈止。
2> 點擊您想測試的類或方法,然后按 Ctrl+Shift+T (??T)枷餐。
3> 在出現(xiàn)的菜單中靶瘸,點擊 Create New Test。
4> 在 Create Test 對話框中毛肋,編輯任何字段并選擇任何要生成的方法怨咪,然后點擊 OK。
5> 在 Choose Destination Directory 對話框中润匙,點擊與您想創(chuàng)建的測試類型對應的源集:androidTest 對應于儀器測試诗眨,test 對應于本地單元測試。
然后點擊 OK孕讳。
您也可以按如下所述在相應測試源集中創(chuàng)建一個通用 Java 文件:
1> 在左側的 Project 窗口中匠楚,點擊下拉菜單并選擇 Project 視圖。
2> 展開相應的模塊文件夾和嵌套的 src 文件夾厂财。 要添加本地單元測試芋簿,請展開 test 文件夾和嵌套的 java 文件夾;要添加儀器測試璃饱,請展開 androidTest 文件夾和嵌套的 java 文件夾与斤。
3> 右鍵點擊 Java 軟件包目錄并選擇 New > Java Class。
4> 命名文件,然后點擊 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'
}
如需了解其他可選內(nèi)容庫依賴項以及有關如何編寫測試的詳細信息,請參閱構建本地單元測試 和構建儀器單元測試食寡。
創(chuàng)建適用于構建變體的儀器測試
如果您的項目包括的構建變體 具有唯一的源集雾狈,則您可能需要相應的儀器測試源集。
在源集中創(chuàng)建與您的構建變體對應的儀器測試有助于保持測試代碼的條理性抵皱,也便于您只運行適用于給定構建變體的測試善榛。
要添加適用于您的構建變體的測試源集,請執(zhí)行以下步驟:
1> 在左側的 Project 窗口中叨叙,點擊下拉菜單并選擇 Project 視圖锭弊。
2> 在相應模塊文件夾內(nèi),右鍵點擊 src 文件夾擂错,然后點擊 New > Directory味滞。
3> 輸入“androidTestVariantName”作為目錄名稱。例如,如果您的構建變體名為“MyFlavor”,則目錄名稱應為“androidTestMyFlavor”闷煤。然后點擊 OK。
4> 右鍵點擊新目錄蚁署,然后點擊 New > Directory。
5> 輸入“java”作為目錄名稱蚂四,然后點擊 OK光戈。
現(xiàn)在您就可以按照以上新增測試的步驟向這個新源集添加測試了。 當您到達 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”源集中的版本奸绷。
如需了解有關源集合并方法的詳細信息,請參閱配置構建层玲。
您應該為應用和測試源集使用構建變體的另一個原因是号醉,通過模擬依賴項創(chuàng)建封閉測試绒瘦。 也就是說,您可以為應用創(chuàng)建一個包含依賴項模擬實現(xiàn)(例如慣常不穩(wěn)定的網(wǎng)絡請求或設備傳感器數(shù)據(jù))的產(chǎn)品風味扣癣,然后添加一個對應的模擬測試源集。
如需了解詳細信息憨降,請參閱有關利用產(chǎn)品風味進行封閉測試 的博文父虑。
運行測試
要運行測試,請執(zhí)行如下操作:
1> 點擊工具欄中的 Sync Project 授药,確保您的項目已與 Gradle 同步士嚎。
2> 以下列其中一種方式運行測試:
a> 在 Project 窗口中,右鍵點擊測試悔叽,然后點擊 Run
b> 在代碼編輯器中莱衩,右鍵點擊測試文件中的某個類或方法,然后點擊 Run 來測試該類中的所有方法娇澎。
c> 要運行所有測試笨蚁,右鍵點擊測試目錄,然后點擊 Run tests 趟庄。
默認情況下括细,您的測試運行時使用的是 Android Studio 默認的運行配置。 如果您想更改某些運行設置(例如儀器運行器和部署選項)戚啥,可以在 Run/Debug Configurations 對話框中編輯運行配置(點擊 Run > Edit Configurations)奋单。
更改測試構建類型
默認情況下,所有測試均針對Debug構建類型運行猫十。 您可以利用模塊級 build.gradle 文件中的 testBuildType 屬性將其更改為其他構建類型览濒。
例如,如果您想針對“staging”構建類型運行測試拖云,請按下面這段代碼中所示對該文件進行編輯贷笛。
android {
...
testBuildType "staging"
}