Est-il possible d'exécuter des cas de test individuels ou des suites de tests individuels à partir d'une cible de test d'application iOS, au lieu de tous les cas de test, à partir d'une interface de ligne de commande?
Vous pouvez exécuter des tests à partir de la ligne de commande avec xcodebuild , hors de la boîte. Lorsque vous procédez ainsi, vous exécutez tous les cas de test contenus dans la cible de test que vous avez sélectionnée.
Vous pouvez également le faire avec scan de Fastlane, bien que je pense que vous êtes limité à exécuter tous les tests du schéma de construction que vous sélectionnez (comme ci-dessus), donc ce n'est pas différent de xcodebuild.
Vous pouvez exécuter des tests spécifiques avec xctool de Facebook, mais il n'utilise pas xcodebuild et est limité à l'exécution sur des simulateurs uniquement, pas sur de véritables appareils de test iOS.
J'ai trouvé une référence à l'exécution directe de l'utilitaire de ligne de commande xctest , mais cela semble être une fonctionnalité non documentée et cible DerivedData. Ceci est compliqué par le fait que les tests d'interface, ont leurs fichiers * xctest dans un bundle XCTRunner séparé .
C'est désormais possible avec Xcode 8 en utilisant le -only-testing
paramètre avec xcodebuild
:
xcodebuild test -workspace <path>
-scheme <name>
-destination <specifier>
-only-testing:TestBundle/TestSuite/TestCase
Regardez cette vidéo: https://developer.Apple.com/videos/play/wwdc2016/409/
Vous pouvez modifier le schéma pour exécuter uniquement des tests spécifiques. Sélectionnez le schéma, puis modifiez le schéma. Dans la fenêtre qui apparaît, sélectionnez la phase de test et désactivez/activez les tests individuels.
Vous pouvez également ajouter des schémas pour exécuter des sous-ensembles de tests. Lorsque vous exécutez les tests à partir de la ligne de commande, vous pouvez spécifier le schéma à utiliser pour le test (au moins dans fastlane).
J'étais dans une situation similaire à la vôtre et j'ai construit un script python qui déclenche l'ensemble de cas de test que je veux. C'est un processus un peu élaboré mais qui fonctionne pour moi et a été très utile au fil du temps dans la mise en œuvre des méthodes DataProvider, la réexécution des cas de test ayant échoué et d'autres personnalisations dont j'avais besoin.
Quelques étapes pertinentes pour ce que vous voulez réaliser.
Si vous avez besoin de plus d'informations, ajoutez un commentaire, j'y répondrai.
-only-testing:<MyXCTargetForTest>/<MyTestSuite>/<MyTestMethod>
Par exemple, si Test Navigator
ressemble à
le paramètre aura le type suivant
-only-testing:SampleAppTest/SampleAppTest/testExample
Vous pouvez également ignorer un test en utilisant: -skip-testing
En savoir plus ici
Pour exécuter un test individuel ou une classe de test, vous pouvez cliquer sur le losange à côté dans la gouttière. C'est juste à côté de l'endroit où les numéros de ligne apparaissent si vous les avez activés.
Dans cette capture d'écran, ma souris survole le diamant. Remarquez comment il a changé en une petite flèche de lecture indiquant qu'il sera exécuté.
Vous pouvez ensuite réexécuter les derniers tests exécutés avec ⌃⌥⌘ G.
Pour autant que je sache, cela ne peut pas être fait via le xcodebuild
.