Freigeben über


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 sie vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie die Migration in Betracht ziehen können.

Erfahren Sie mehr über die Fristen für den Support sowie über mögliche Alternativen.

Dieses Handbuch enthält Anweisungen zum Vorbereiten von XCUITest-Tests für den Upload in App Center Test.

Testdienstanforderungen

  • Xcode >= 9.4.1
  • iOS >= 9.0

Testdienstbeschränkungen

  • Nur die hochgeladene App kann getestet werden, nicht Interaktionen über Apps oder das restliche System.

Build für Tests

Um einen Test im App Center auszuführen, müssen Sie Ihre Anwendung und ein XCUITest-Bündel erstellen. Führen Sie einen der beiden folgenden Befehle aus dem Stammverzeichnis Ihres Anwendungsprojekts 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, wahrscheinlich mit PROJECT_NAME.xcodeprojdem Titel . Wenn Sie eine .xcworkspace, anstelle -workspace von -project. YOUR_APP_SCHEME sollte das Schema sein, das Sie zum Erstellen Ihrer Anwendung verwenden. Standardmäßig ist sie in der Regel der Name Ihrer Anwendung.

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

xcrun xcodebuild -list

Hochladen von Tests in das App Center

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

Hier ist 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 Das App Center finden Sie in diesem Shellskript, das Tests an App Center sendet.

Weitere 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.

Aktivitäten

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 Unterschritte 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 Jeden Activitygeneriert. Sie können einen Screenshot an einem anderen Punkt innerhalb eines Activity Screenshots aufzeichnen, indem Sie einen Screenshot mit XCUIScreen erstellen und dann eine Anlage mit XCTAttachment erstellen und dem aktuellen ActivityHinzufügen hinzufügen. Dieser Screenshot wird in App Center-Testberichten anstelle des Standardfotos am Ende des ActivityBildschirms angezeigt.

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)