準備要上傳的 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
而非 -project
。 YOUR_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)