Migrer XCTest vers Swift Testi... Note

Migrer XCTest vers Swift Testing

Le framework de test Swift est un framework de test open-source conçu pour Swift, introduit par Apple lors de la WWDC24 et livré avec Xcode 16. Il utilise des fonctionnalités modernes comme la concurrence et les macros, et prend en charge Windows et Linux, ainsi que les plates-formes d'Apple. Il n'y a pas de raison urgente de migrer de XCTest, mais Swift Testing offre plusieurs avantages, notamment la possibilité d'exécuter des tests en processeur à l'aide de la concurrence Swift, ce qui permet des tests parallèles sur des appareils physiques.Pour commencer avec Swift Testing, vous pouvez mélanger des tests unitaires XCTest et Swift Testing dans une cible de test, mais vous ne devriez pas mélanger les frameworks de test dans un test. Vous pouvez importer le framework de test Swift en ajoutant "import Testing" à votre fichier de test. Apple recommande de grouper les tests en les ajoutant à un type, comme une structure ou une classe, et d'utiliser la méthode init pour la mise en place et la démolition.Les tests Swift Testing sont des méthodes Swift normales qui deviennent des tests unitaires lorsque vous ajoutez le macro @Test. Vous pouvez marquer les méthodes de test avec async ou throws et les isoler à un acteur si nécessaire. L'attribut @Test est un macro qui peut être développé pour voir l'implémentation.Swift Testing utilise les macros #expect et #require pour les assertions, qui offrent plus de flexibilité et des messages d'erreur plus informatifs que les XCTAssert de XCTest. Le macro #expect enregistre les attentes échouées et continue le test, tandis que le macro #require est une version qui lance une erreur et arrête l'exécution du test en cas d'erreur.Vous pouvez également utiliser Issue.record pour faire échouer un test sans évaluer une condition, similaire à XCTFail dans XCTest. Dans l'ensemble, Swift Testing offre plusieurs avantages par rapport à XCTest, notamment une prise en charge améliorée de la concurrence et des assertions plus flexibles.