In diesem Leitfaden wird beschrieben, wie Sie einen iOS-XCTest mit der gcloud beta
device-run CLI ausführen und die Ergebnisse in der Google Cloud Console aufrufen. Es wird davon ausgegangen, dass Sie ein Google Cloud -Konto und ein Projekt haben.
Zur Verwendung der device-run-CLI müssen Sie die Projekt-ID Google Cloudangeben. Eine Zusammenfassung der Befehle finden Sie unter gcloud beta device-run.
Hinweis
Bei diesen Schritten wird davon ausgegangen, dass Sie bereits Folgendes getan haben:
- Sie haben ein Google Cloud -Projekt erstellt.
- Richten Sie die Developer Device Platform gemäß der Kurzanleitung ein.
- Sie haben sich im Terminal mit
gcloudauthentifiziert. - Übersicht über Geräteausführung mit allgemeinen Informationen.
- Sie haben Ihre Tests kompiliert und in einem ZIP-Paket zusammengefasst.
Schritt 1: Gerätetypen auswählen
Mit der device-run-CLI können iOS-Tests auf allen verfügbaren physischen Geräten ausgeführt werden. Eine vollständige Liste der verfügbaren Geräte finden Sie entweder im interaktiven Gerätekatalog oder durch Ausführen des folgenden Befehls:
gcloud beta device-run devices list
Beispielausgabe:
ID MAKE NAME MODEL HARDWARE_TYPE OS_VERSION CAPACITY AVAILABILITY PRODUCTS
iphonese3-18-4 Apple iPhone SE 3 iphonese3 PHYSICAL 18.4 NONE NONE Automation
iphonese3-26-3 Apple iPhone SE 3 iphonese3 PHYSICAL 26.3 NONE NONE Automation
Informationen zum Filtern dieser Liste finden Sie im Gerätekatalog. Wenn Sie ein bestimmtes Gerät für die Testausführung verwenden möchten, geben Sie die entsprechende ID an (z. B. iphonese3-18-4) im Befehl „submit“.
Schritt 2: XCTest vorbereiten und verpacken
Bevor Sie Ihre Tests ausführen, müssen Sie sie kompilieren, dafür sorgen, dass sie signiert sind, die Codesignaturen überprüfen und die resultierenden Artefakte in einer ZIP-Datei verpacken, die Ihre .xctestrun-Konfiguration und die Anwendungs-Test-Bundles enthält.
1. Tests für physische iOS‑Geräte erstellen
Öffnen Sie Ihr Projekt in Xcode und erstellen Sie Ihre App und Testziele für Tests:
- Prüfen Sie, ob die Codesignierung in Xcode sowohl für das App-Ziel als auch für das Testrunner-Ziel richtig konfiguriert ist (mit einem gültigen Bereitstellungsprofil und einer gültigen Entwickleridentität).
Erstellen Sie einen Build für Tests mit Xcode (Product > Build For > Testing) oder mit
xcodebuild.Für einen Arbeitsbereich:
xcodebuild build-for-testing \ -workspace YourProject.xcworkspace \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"Für ein eigenständiges Projekt:
xcodebuild build-for-testing \ -project YourProject.xcodeproj \ -scheme YourScheme \ -derivedDataPath ./build \ -destination "generic/platform=iOS"
Dadurch werden die Build-Produkte unter ./build/Build/Products generiert.
2. Build-Produkte und Signaturen prüfen
Prüfen Sie nach dem Erstellen, ob die Anwendung, der Runner und das .xctestrun-Manifest unter ./build/Build/Products/ generiert wurden. Wenn das Bundle lokal signiert wurde, können Sie die Bundlesignaturen mit codesign überprüfen:
App-Bundle überprüfen:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp.appErwartete Ausgabe:
YourApp.app: valid on diskWenn Sie einen XCUITest ausführen, prüfen Sie auch das Testrunner-Bundle:
codesign --verify --deep --verbose ./build/Build/Products/Debug-iphoneos/YourApp-Runner.appErwartete Ausgabe:
YourApp-Runner.app: valid on disk
3. ZIP-Archiv erstellen
Komprimieren Sie sowohl das Verzeichnis Debug-iphoneos als auch die Datei .xctestrun, die sich im Ordner „Build-Ausgabeprodukte“ befindet, in ein einzelnes ZIP-Archiv.
Führen Sie den folgenden Befehl im Verzeichnis mit den Build-Produkten aus:
cd ./build/Build/Products
zip -r MyTests.zip Debug-iphoneos *.xctestrun
Dadurch wird das gepackte MyTests.zip erstellt, das mit dem Flag --test verwendet werden kann.
Schritt 3: XCTest ausführen
Diese Flags sind erforderlich:
- Gerät: Geben Sie ein Gerät mit
--devicean:--device iphonese3-18-4 - Test: Geben Sie die ZIP-Datei für den Test mit
--testan:--test ./MyTests.zip
Verwenden Sie den Befehl gcloud beta device-run sessions submit xctest, um Ihren XCTest auszuführen. Sie müssen die im vorherigen Schritt kompilierte Test-ZIP-Datei (MyTests.zip) angeben.
So führen Sie eine einfache Testsitzung durch:
gcloud beta device-run sessions submit xctest \
--device iphonese3-18-4 \
--test ./MyTests.zip
Wenn die Ausführung beginnt, werden in der CLI die erstellte Sitzungs-ID und das Cloud Storage-Ziel angezeigt, in dem die Ergebnisse gespeichert werden:
Creating session [session-ee78b0ed] in location [global].
Result files will be stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/session-ee78b0ed/].
Waiting for session [session-ee78b0ed] to complete....
Schritt 4: Testlauf konfigurieren
Sie können die Testausführung mit den folgenden optionalen Flags anpassen. Mindestens eine Instanz des Flags --device ist jedoch erforderlich:
- Mehrere Geräte: Geben Sie das Flag
--devicemehrmals an, um denselben Test gleichzeitig auf mehreren Geräten auszuführen:--device iphonese3-18-4 --device iphonese3-26-3oder--device iphonese3-18-4,iphonese3-26-3. - Zusätzliche Apps: Installieren Sie ein oder mehrere zusätzliche
.ipa-Pakete, bevor Sie den Test mit--additional-appsstarten:--additional-apps=/path/to/AdditionalApp.ipa - Benutzerdefinierte
.xctestrun-Datei: Übergeben Sie eine benutzerdefinierte Konfigurationsdatei mit--xctestrun-file:--xctestrun-file=/path/to/CustomTests.xctestrun - Test-Timeout: Beschränken Sie die Ausführungsdauer:
--xctest-timeout=10m(Gültiger Bereich:1mbis1h, Standardwert:5m). - Labels: Hängen Sie benutzerdefinierte Metadaten an die Sitzung an:
--labels=env=staging,owner=my-team - Dateien auf das Gerät übertragen: Dateien vor der Ausführung des Tests in den App-Datencontainer übertragen:
--other-files-to-push=/tmp/data.txt=com.example.app:/Documents/data.txt - Dateien vom Gerät abrufen: Dateien nach der Ausführung des Tests aus dem App-Datencontainer abrufen:
--paths-to-pull=com.example.app:/Documents/output.txt - Wiederholungen instabiler Tests: Legen Sie die maximale Anzahl der Versuche fest, instabile Tests noch einmal auszuführen:
--flaky-test-attempts=3(Standardwert: 1 Versuch). - Benutzerdefinierter Cloud Storage-Bucket: Geben Sie einen benutzerdefinierten Cloud Storage-Bucket für Ein- und Ausgaben an:
--bucket-name=my-custom-bucket(Standardwert:PROJECT_ID-devicerun). - Da das Hochladen großer ZIP- oder IPA-Dateien zeitaufwendig sein kann, können Sie direkt auf Ihre Dateien verweisen, indem Sie ihre Cloud Storage-
gs://-Pfade verwenden, um die Uploadzeit zu verkürzen.
Schritt 5: Testlauf ansehen und verwalten
Mit diesen Befehlen können Sie aktive Läufe verfolgen und frühere Sitzungen verwalten:
- Sitzung beschreiben: Fragen Sie den Live-Fortschritt oder die Endergebnisse einer Sitzung ab:
gcloud beta device-run sessions describe SESSION_IDFügen Sie--fullhinzu, um vollständige Details wie Gerätezuweisungen, Ausführungs-IDs und Cloud Storage-Artefaktpfade aufzurufen. - Sitzungen auflisten: Hier kannst du deine letzten Läufe ansehen:
gcloud beta device-run sessions list --limit=10 - Sitzung abbrechen: Eine laufende Testsitzung beenden:
gcloud beta device-run sessions cancel SESSION_ID - Vorgang abbrechen: Einen ausstehenden oder aktiven Vorgang beenden:
gcloud beta device-run operations cancel OPERATION_ID
Nächste Schritte
Als Nächstes suchen und analysieren Sie Logs.