Share via


準備 Appium 測試以進行上傳

重要

Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。

深入瞭解支持時程表和替代方案。

準備應用程式及其測試套件以進行上傳的步驟會根據測試架構而有所不同。 本指南說明如何使用 Java 搭配 JUnit 準備 Appium 測試,以上傳至 App Center。 如需撰寫 Appium 測試的指引,請參閱 Appium 檔

請注意下列 Appium 支援限制:

注意

支援 WebView 內容、Chrome Web 驅動程式和 Chrome 瀏覽器測試與 browserName 功能!

  • ) 僅支援TestNG (JUnit測試。
  • 不支援Android 4.2或先前版本。 不支援已淘汰的UIAutomator驅動程式。
  • 不支援 iOS 9.2.1 或之前版本。 不支援已淘汰的UIAutomationiOS驅動程式。
  • JUnit @Category attribute不支援 。 (可以改用 Include/Exclude)
  • Maven 版本必須至少為 3.3.9。
  • 目前的 Appium 版本是 1.22.0。 它會定期更新為新版本。
  • 支援 JUnit 4.9 - 4.12;我們不支援 JUnit 5。
  • 測試必須精確地以一個應用程式為目標。 MobileCapabilityType.FULL_RESET支援 ()

注意

在某些情況下,如果使用不支援的工具或功能,測試仍然可以在App Center中運作。 不過,不支援的功能在未來的更新中不是 QA,而且可能會在沒有警告的情況下中斷。

必要條件

測試將會使用 Maven Surefire 來執行,這需要測試遵循 特定的命名慣例

"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".

嘗試上傳至 App Center 測試之前,請確定使用 Maven 在電腦上本機執行測試可運作:

➜  AppiumTest git:(main) ✗ mvn verify
...
Running MainTest
started: SimpleTest (MainTest)
Setting up capabilities
failed
finished
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.728 sec <<< FAILURE!
SimpleTest(MainTest)  Time elapsed: 0.594 sec  <<< ERROR!
...

如果您無法在本機使用命令行執行測試,測試也不會在 App Center 測試中運作。

1.組建系統的變更

步驟 1 - 新增相依性

您必須新增 Appium 測試延伸模組的相依性:

<dependency>
    <groupId>com.microsoft.appcenter</groupId>
    <artifactId>appium-test-extension</artifactId>
    <version>1.6</version>
</dependency>

此程式代碼可確保增強的 Android 和 iOS 驅動程式可在編譯時期使用。 增強的驅動程式主要是為了啟用 label 此功能而提供。 如需功能的詳細資訊, label 請參閱步驟 4。

步驟 2 - 新增上傳配置檔

標記中複製到標記中的 <profiles> 您的 pom.xml 。 如果您的 pom 中沒有 <profiles> 區段,請建立一個。 配置檔會在啟動時將您的測試類別和所有相依性封裝到 target/upload 資料夾中,並準備好上傳至測試。

2.測試的變更

步驟 1 - 新增匯入

將這些套件匯入測試類別:

import com.microsoft.appcenter.appium.Factory;
import com.microsoft.appcenter.appium.EnhancedAndroidDriver;
import org.junit.rules.TestWatcher;
import org.junit.Rule;

步驟 2 - 具現化 TestWatcher

在每個測試類別中插入此宣告:

    @Rule
    public TestWatcher watcher = Factory.createWatcher();

步驟 3 - 更新驅動程式宣告

將的AndroidDriver<MobileElement>宣告取代為 EnhancedAndroidDriver<MobileElement>IOSDriver<MobileElement>EnhancedIOSDriver<MobileElement>

    private static EnhancedAndroidDriver<MobileElement> driver;

步驟 4 - 更新驅動程式具現化

取代您 具現化 驅動程式的方式,以下列形式取代這幾行:

    driver = new AndroidDriver<MobileElement>(url, capabilities);

...已變更為:

    driver = Factory.createAndroidDriver(url, capabilities);

使用這些驅動程式仍可讓您在本機執行測試,而不需要進行其他修改,但可讓您使用 driver.label("text")在測試執行中「加上標籤」測試步驟。 裝置的文字和螢幕快照會顯示在 App Center 的測試報告中。

建議您在方法中@After呼叫 driver.label ,它會取得應用程式最終狀態的螢幕快照。 測試的範例 @After 方法看起來可能像下列程式代碼:

    @After
    public void TearDown(){
        driver.label("Stopping App");
        driver.quit();
    }

3.上傳至 App Center 測試

上傳測試的步驟:

  1. 使用 啟動測試回合的指示,產生App Center測試上傳命令。

  2. 將您的測試類別與所有相依性封載到 target/upload 資料夾中:

    mvn -DskipTests -P prepare-for-upload package
    
  3. 執行上傳命令:

    appcenter test run appium --app "APP_ID" --devices "DEVICE_SET_ID" --app-path PATH_TO_FILE.apk  --test-series "main" --locale "en_US" --build-dir target/upload
    

4.效能疑難解答

App Center 中裝置上的測試會比本機裝置執行稍微慢一點。 通常,執行速度較慢,因為有更多裝置可供使用,允許平行測試執行。

測試回合有三個主要來源:重新簽署、重新安裝和網路工作。

iOS) 上的重新簽署 (

在 iOS 裝置上安裝之前,您的應用程式會經歷稱為重新簽署的程式。 此程式必須讓布建配置檔符合雲端中的裝置。 重新簽署需要一些時間,通常是 ~1-2 分鐘。 很少,重新簽署也會導致效能降低,因為會快取重新簽署的應用程式。 每個二進位檔只會執行一次耗時的程式。

如果您的持續傳遞設定會在建置和測試之前更新IPA版本,則每個測試的二進位檔將會不同,而且重新簽署懲罰會更頻繁地發生。

重新安裝

在共用裝置雲端上,請務必確保每個測試之間都會清除裝置。 使用裝置的下一位客戶可能是來自另一個組織的某人。 在 App Center 測試中,應用程式會在測試回合完成後自動卸載。

您可以省略 MobileCapabilityType.FULL_RESET 並設定 MobileCapabilityType.NO_RESETtrue 以加速測試執行。 如需詳細資訊,請參閱 重設策略

網路工作

局域網路工作較快,因為伺服器更接近遠端主機且更專用。