Vorbereiten von XCUITest-Tests für den Upload

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie möglicherweise eine Migration in Erwägung ziehen.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Dieser Leitfaden enthält Anweisungen zum Vorbereiten von XCUITest-Tests für das Hochladen in App Center Test.

Testdienstanforderungen

  • Xcode >= 9.4.1
  • iOS >= 9.0

Hinweis

Xcode 12 und iOS 14 sind jetzt verfügbar!

Testen von Dienstbeschränkungen

  • Es kann nur die hochgeladene App getestet werden, nicht Interaktionen über Apps oder den Rest des Systems.

Build For Testing

Zum Ausführen eines Tests in App Center müssen Sie Ihre Anwendung und ein XCUITest-Bundle erstellen. Führen Sie einen der beiden folgenden Befehle aus dem Stammverzeichnis Ihres Anwendungsprojektverzeichnisses aus:

# 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 sollte auf eine .xcodeproj Datei verweisen, die wahrscheinlich den Titel hat PROJECT_NAME.xcodeproj. Wenn Sie einen .xcworkspaceverwenden, verwenden Sie -workspace anstelle von -project. YOUR_APP_SCHEME sollte das Schema sein, das Sie zum Erstellen Ihrer Anwendung verwenden. Standardmäßig ist dies in der Regel der Name Ihrer Anwendung.

Der xcrun erstellt Ihre App und ein XCUITest-Bundle in das DerivedData/Build Verzeichnis. Ihre App und das XCUITest-Bundle befinden sich im DerivedData/Build/Products/Debug-iphoneos/ Verzeichnis.

xcrun xcodebuild -list

Hochladen von Tests in App Center

Sobald eine Testsuite vorbereitet ist, richten Sie als Nächstes eine Testausführung ein , um Ihre Tests hochzuladen und auszuführen.

Hier sehen Sie ein Beispiel dafür, wie Sie Ihre XCUITest-Suite in App Center Test hochladen können.

# 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

Ein konkretes Beispiel für das Übermitteln von Tests an App Center finden Sie in diesem Shellskript, das Tests an App Center übermittelt.

Zusätzliche Screenshots und Testschritte

Am Ende jeder Testmethode wird automatisch ein Screenshot für den Testbericht erstellt. Jeder Screenshot wird im App Center-Testbericht als separater Testschritt angezeigt.

activities

Sie können zusätzliche Bezeichnungen und Screenshots für eine Testmethode generieren, indem Sie Ihren Testcode mithilfe von Apple gruppieren Activities. Weitere Informationen finden Sie unter Gruppieren von Tests in Teilschritte mit Aktivitäten.

Codeausschnitt zum Umschließen von Testcode in einer Aktivität

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

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

Manuelle Screenshots

Ein Screenshot wird automatisch für den Testbericht am Ende jedes Activitygeneriert. Sie können einen Screenshot an einem anderen Punkt in einem Activity aufzeichnen, indem Sie einen Screenshot mit XCUIScreen erstellen, dann eine Anlage mit XCTAttachment erstellen und sie dem aktuellen Activityhinzufügen. Dieser Screenshot wird in App Center-Testberichten anstelle des Standardfotos vom Ende des Activityangezeigt.

Codeausschnitt zum Generieren und Anfügen eines Screenshots in einer Aktivität

         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)