共用方式為


準備要上傳的 XCUITest 測試

重要

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

了解有關支援時間表和替代方案的詳細資訊

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

測試服務需求

  • Xcode >= 9.4.1
  • iOS >= 9.0

測試服務限制

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

用於測試的組建

若要在 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)