準備 XCUITest 測試以進行上傳

本指南提供準備 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 suite 上傳至 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 。 您可以 Activity 使用 XCUIScreen 拍攝螢幕擷取畫面,然後使用 XCTAttachment 建立附加檔案,並將它新增至目前的位置,以在中的不同時間點錄製螢幕擷取畫面 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)