Exécuter un XCTest

Ce guide explique comment préparer un XCTest pour les tests 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 de données dérivées. Si vous le souhaitez, vous pouvez conserver l'emplacement par défaut de ce répertoire, mais il est souvent utile de choisir un emplacement plus facilement accessible pour les fichiers, en particulier si vous allez exécuter fréquemment des tests avec Test Lab:

  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 la liste déroulante Données dérivées, remplacez Emplacement par défaut par Emplacement personnalisé.
  4. Dans le champ situé sous la liste déroulante, sélectionnez un emplacement où Xcode doit générer vos tests. (Il s'agit de votre FOLDER_WITH_TEST_OUTPUT)

Étape 2: Créer 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 de l'appareil 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 (Créer pour) > Testing (Tests).

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 la section 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 de 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" correspond au 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: Packagez votre application et testez l'importation

  1. Une fois le test créé, compressez-le 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 empaqueter votre test en compressant manuellement les fichiers de test:

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

  2. Ouvrez le dossier qui porte le nom de votre projet en préfixe, 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 la qualité de 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 la gcloud CLI.