Share via


準備要上傳的 XCUITest 測試

重要

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

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

本指南提供準備 XCUITest 測試以上傳至 App Center 測試的指示。

測試服務需求

  • Xcode >= 9.4.1
  • iOS >= 9.0

注意

Xcode 12 和 iOS 14 現已推出!

測試服務限制

  • 只有上傳的應用程式可以測試,無法透過應用程式或系統的其餘部分進行互動。

用於測試的組建

若要在 App Center 中執行測試,您需要建置您的應用程式和 XCUITest 套件組合。 從應用程式項目目錄的根目錄執行下列兩個命令之一:

# How to build a xcodeproj
rm -rf DerivedData
xcrun xcodebuild build-for-testing \
  -configuration Debug \
  -project YOUR_XCODEPROJ \
  -sdk iphoneos \
  -scheme YOUR_APP_SCHEME \
  -derivedDataPath DerivedData

YOUR_XCODEPROJ 應該指向 .xcodeproj 可能標題為 的 PROJECT_NAME.xcodeproj檔案。 如果您使用 .xcworkspace,請使用 -workspace ,而不是 -projectYOUR_APP_SCHEME 應該是您用來建置應用程式的配置。 根據預設,通常是應用程式的名稱。

xcrun 會將您的應用程式和 XCUITest 套件組合建置到 DerivedData/Build 目錄中。 您的應用程式和 XCUITest 套件組合會位於 DerivedData/Build/Products/Debug-iphoneos/ 目錄中。

xcrun xcodebuild -list

將測試上傳至 App Center

測試套件備妥之後,接下來 設定測試回合 以上傳並執行測試。

以下是如何將 XCUITest 套件上傳至 App Center 測試的範例。

# Upload your test to App Center
appcenter test run xcuitest \
  --app "APP_ID" \
  --devices "DEVICE_SET_ID" \
  --test-series "main" \
  --locale "en_US" \
  --build-dir DerivedData/Build/Products/Debug-iphoneos

如需將測試提交至 App Center 的具體範例,請參閱 這個將測試提交至 App Center 的殼層腳本

其他螢幕快照和測試步驟

在每個測試方法結束時,系統會自動針對測試報告進行螢幕快照。 每個螢幕快照都會以個別 的測試步驟的形式顯示在App Center測試報告中。

活動

您可以使用 Apple 的 來分組測試程式代碼,以產生測試方法的其他標籤和螢幕 Activities快照。 如需詳細資訊,請參閱 使用活動將測試分組至子步驟

在活動中包裝測試程式代碼的代碼段

    [XCTContext
     runActivityNamed:title
     block:^(id<XCTActivity>  _Nonnull activity) {
         // test code
     }];

        XCTContext.runActivity(named: title) { (activity) in
            // test code
        }

手動螢幕快照

每個 Activity結尾都會自動產生測試報告的螢幕快照。 您可以使用 XCUIScreen 擷取螢幕快照,然後使用 XCTAttachment 建立附件,然後將它新增至目前的 Activity,以在 內Activity記錄螢幕快照。 此螢幕快照會顯示在 App Center 測試報告中,而不是從 結尾 Activity的預設螢幕快照。

要產生並附加活動中螢幕快照的代碼段

         XCUIScreenshot *screenshot = [[XCUIScreen mainScreen] screenshot];
         XCTAttachment *attachment;
         attachment = [XCTAttachment attachmentWithScreenshot:screenshot];
         [attachment setLifetime:XCTAttachmentLifetimeKeepAlways];
         [activity addAttachment:attachment];
            let screenshot = XCUIScreen.main.screenshot()
            let attachment = XCTAttachment(screenshot: screenshot)
            attachment.lifetime = .keepAlways
            activity.add(attachment)