XCTest ausführen

In dieser Anleitung wird beschrieben, wie Sie einen XCTest für Tests in Firebase Test Lab vorbereiten.

Schritt 1: Speicherort der abgeleiteten Daten Ihres Projekts konfigurieren

Xcode speichert kompilierte iOS-Artefakte, einschließlich aller von Ihnen erstellten Tests, in einem Verzeichnis mit abgeleiteten Daten. Sie können den Standardspeicherort für dieses Verzeichnis beibehalten, wenn Sie möchten. Es ist jedoch oft hilfreich, einen leichter zugänglichen Speicherort für die Dateien auszuwählen, insbesondere wenn Sie häufig Tests mit Test Lab ausführen:

  1. Öffnen Sie Ihr Projekt in Xcode.
  2. Wählen Sie in der macOS-Menüleiste Datei > Projekteinstellungen… aus.
  3. Ändern Sie im Drop-down-Menü Abgeleitete Daten die Option von Standardspeicherort zu Benutzerdefinierter Speicherort.
  4. Wählen Sie im Feld unter dem Drop-down-Menü einen Speicherort aus, an dem Xcode Ihre Tests ausgeben soll. (Dies ist Ihr FOLDER_WITH_TEST_OUTPUT)

Schritt 2: Generische Testdatei erstellen

Test Lab führt Unit- und UI-Tests mit dem XCTest-Framework aus. Wenn Sie die XCTests Ihrer App auf Test Lab Geräten ausführen möchten, erstellen Sie sie für Tests auf einem generischen iOS-Gerät:

  1. Wählen Sie im Drop-down-Menü für Geräte oben im Xcode-Arbeitsbereichsfenster Generisches iOS-Gerät aus.
  2. Wählen Sie in der macOS-Menüleiste Produkt > Erstellen für > Testen aus.

Alternativ können Sie Ihren XCTest über die Befehlszeile erstellen. Verwenden Sie dazu den folgenden Befehl in einem Terminal:

Projekt

xcodebuild -project PATH/TO/YOUR_WORKSPACE/YOUR_PROJECT.xcodeproj \
   -scheme YOUR_SCHEME \
   -derivedDataPath FOLDER_WITH_TEST_OUTPUT \
   -sdk iphoneos build-for-testing

Arbeitsbereich

xcodebuild -workspace PATH/TO/YOUR_WORKSPACE.xcworkspace \
   -scheme YOUR_SCHEME \
   -derivedDataPath FOLDER_WITH_TEST_OUTPUT \
   -sdk iphoneos build-for-testing

Schritt 3: Test signieren und überprüfen

  1. Achten Sie darauf, dass alle Artefakte in der App und im Test signiert sind. Sie können dies beispielsweise in Xcode tun, indem Sie Signierungseinstellungen wie Bereitstellungsprofil und Identität angeben. Weitere Informationen finden Sie unter Apple Code Signing.

  2. Überprüfen Sie die App-Signatur mit dem Befehl codesign --verify --deep --verbose /path/to/MyApp.app. Dabei ist „MyApp“ der Name der App im entzippten Ordner. Dies variiert je nach Projekt. Die erwartete Ausgabe ist MyApp.app: valid on disk.

  3. Wenn Sie einen XCUITest ausführen, müssen Sie den Test und den Runner mit dem Befehl codesign --verify --deep --verbose /path/to/MyTest-Runner.app überprüfen. Dabei ist „MyTest“ der Name des Runners im entzippten Ordner. Dies variiert je nach Projekt. Die erwartete Ausgabe ist MyTest-Runner.app: valid on disk.

Schritt 4: App und Test für den Upload packen

  1. Nachdem der Test erfolgreich erstellt wurde, zippen Sie ihn für den Upload zu Test Lab:

    cd FOLDER_WITH_TEST_OUTPUT/Build/Products : \
    zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
    

Sie können Ihren Test auch packen, indem Sie die Testdateien manuell komprimieren:

  1. Öffnen Sie den Finder und rufen Sie FOLDER_WITH_TEST_OUTPUT auf.

  2. Öffnen Sie den Ordner, dessen Name mit dem Namen Ihres Projekts beginnt, und rufen Sie dann den Ordner Build/Products auf.

  3. Wählen Sie die Ordner Debug-iphoneos und YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun aus und komprimieren Sie sie.

Schritt 5: (Optional) Test lokal ausführen

Bevor Sie Ihren Test mit Test Lab ausführen, können Sie ihn lokal mit einem über USB verbundenen Gerät ausführen, um sein Verhalten zu überprüfen:

xcodebuild test-without-building \
    -xctestrun "Derived Data/Build/Products/YOUR_SCHEME.xctestrun" \
    -destination id=your-phone-id

Nächste Schritte

Laden Sie Ihren Test in der Firebase Konsole oder der gcloud CLI hoch und führen Sie ihn aus.