隨著應用程式業務拓展,建議您放置一些應用程式元件 在應用程式主要程序以外的程序中。如要在這些元件中測試應用程式元件 非預設處理程序,可以使用 Multiprocess Espresso 的功能。 這項工具適用於 Android 8.0 (API 級別 26) 以上版本,可讓您 順暢測試跨應用程式程序的 UI 互動 邊界,同時維持 Espresso 的同步處理保證。
使用 Multiprocess Espresso 時,請保留以下版本管理和範圍 注意事項:
- 您的應用程式必須指定 Android 8.0 (API 級別 26) 以上版本。
- 這項工具只能測試您在程序中加入的應用程式元件 應用程式的套件。但無法測試外部程序。
使用工具
如要使用 Multiprocess Espresso 在應用程式中測試程序,請新增參照
新增至應用程式 build.gradle
檔案中的 espresso-remote 構件:
Groovy
dependencies { ... androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1' }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1') }
您還需要將下列內容加入應用程式的 androidTest
資訊清單:
- 定義程序的
<instrumentation>
元素。 <meta-data>
元素,指出您要使用 Multiprocess Espresso。
以下程式碼片段說明如何新增這些元素:
<manifest ... package="androidx.test.mytestapp.tests"> <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" /> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="androidx.test.mytestapp" android:targetProcesses="*"> <meta-data android:name="remoteMethod" android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" /> </instrumentation> </manifest>
上方程式碼片段會指示您要讓其測試的 Android 架構
應用程式套件中的每個程序。如果您只想測試一小部分的
應用程式的處理程序,您可以指定在
請改為使用 targetProcesses
元素:
<instrumentation
...
android:targetProcesses=
"androidx.test.mytestapp:myFirstAppProcessToTest,
androidx.test.mytestapp:mySecondAppProcessToTest" ... />
瞭解工具的架構
測試應用程式並啟動預設程序時,您可以執行 UI 互動 (例如按下按鈕) 會在次要執行個體中啟動活動 上傳資料集之後,您可以運用 AutoML 自動完成部分資料準備工作接著,系統會完成下列步驟以啟用跨程序 進行測試:
- Android 架構會建立並啟動新程序,遵循應用程式的
導覽架構每項
Instrumentation
程序 包括新的AndroidJUnitRunner
。 在這個階段,這兩個檢測程序無法與 其他。 - 每項
AndroidJUnitRunner
敬上 執行個體將 Espresso 註冊為其測試架構。 - 這裡的兩個執行個體
AndroidJUnitRunner
敬上 執行握手來建立彼此之間的連結。相同 時間、每個AndroidJUnitRunner
敬上 執行個體連結所有已註冊的用戶端 (例如 Espresso) 與其對應的 與其他程序中的對應項目,讓這些客戶 與其他通訊管道 - 每個
AndroidJUnitRunner
執行個體會持續尋找新增的檢測執行個體,並進行測試 並視需求建立其他通訊管道。
圖 1 說明瞭這項程序的結果:
其他資源
如要進一步瞭解這個主題,請參閱下列資源。
- 透過 Android 測試支援功能,在 Android 裝置上進行測試 媒體庫 2017 年 Google I/O 大會講座影片 從 36:41 開始