Exécuter un XCTest

Ce guide explique comment préparer un XCTest pour le tester dans Firebase Test Lab.

Étape 1 : Configurez l'emplacement des données dérivées de votre projet

Xcode place les artefacts iOS compilés, y compris les tests que vous créez, dans un répertoire "DerivedData". Si vous le souhaitez, vous pouvez conserver l'emplacement par défaut de ce répertoire. Toutefois, il est souvent utile de choisir un emplacement plus facilement accessible pour les fichiers, en particulier si vous prévoyez d'exécuter des tests avec Test Lab souvent :

  1. Ouvrez votre projet dans Xcode.
  2. Dans la barre de menu macOS, sélectionnez File > Project Settings… (Fichier > Paramètres du projet…).
  3. Dans le menu déroulant Données dérivées, remplacez Emplacement par défaut par Emplacement personnalisé.
  4. Dans le champ situé sous le menu déroulant, sélectionnez un emplacement où Xcode doit générer vos tests. (C'est votre FOLDER_WITH_TEST_OUTPUT)

Étape 2 : Créez un fichier de test générique

Test Lab exécute des tests unitaires et des tests d'interface utilisateur à l'aide du framework XCTest. Pour exécuter les XCTests de votre application sur des appareils Test Lab, compilez-la pour les tests sur un appareil iOS générique :

  1. Dans le menu déroulant des appareils en haut de la fenêtre de l'espace de travail Xcode, sélectionnez Appareil iOS générique.
  2. Dans la barre de menu macOS, sélectionnez Product (Produit) > Build For (Compiler pour) > Testing (Test).

Vous pouvez également créer votre XCTest à partir de la ligne de commande. Exécutez la commande suivante dans un terminal :

projet

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

espace de travail

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

Étape 3 : Signez votre test et vérifiez-le

  1. Assurez-vous que tous les artefacts de l'application et du test sont signés. Par exemple, vous pouvez le faire via Xcode en spécifiant des paramètres de signature tels que le profil de provisionnement et l'identité. Pour en savoir plus, consultez Signature de code Apple.

  2. Vérifiez la signature de l'application en exécutant codesign --verify --deep --verbose /path/to/MyApp.app, où "MyApp" est le nom de l'application dans le dossier décompressé. Cela dépend de chaque projet. Le résultat attendu est MyApp.app: valid on disk.

  3. Si vous exécutez un XCUITest, vous devez vérifier le test et l'exécuteur en exécutant codesign --verify --deep --verbose /path/to/MyTest-Runner.app, où "MyTest" est le nom de l'exécuteur dans le dossier décompressé. Cela varie pour chaque projet. Le résultat attendu est MyTest-Runner.app: valid on disk.

Étape 4 : Empaquetez votre application et testez l'importation

  1. Une fois votre test compilé avec succès, compressez-le au format ZIP pour l'importer dans Test Lab :

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

Vous pouvez également regrouper votre test en compressant manuellement les fichiers de test :

  1. Ouvrez le Finder et accédez à FOLDER_WITH_TEST_OUTPUT.

  2. Ouvrez le dossier dont le nom commence par le nom de votre projet, puis accédez au dossier Build/Products.

  3. Sélectionnez les dossiers Debug-iphoneos et YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun, puis compressez-les.

Étape 5 : (Facultatif) Exécutez votre test localement

Avant d'exécuter votre test avec Test Lab, vous pouvez l'exécuter localement avec un appareil connecté par USB pour vérifier son comportement :

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

Étapes suivantes

Importez et exécutez votre test dans la console Firebase ou dans gcloud CLI.