PACT est un outil de test de contrat. Le test de contrat est un moyen de s`assurer que les services (comme un fournisseur d`API et un client) peuvent communiquer entre eux. Sans test de contrat, la seule façon de savoir que les services peuvent communiquer est d`utiliser des tests d`intégration coûteux et fragiles. Notez que le port défini ici doit être le même que nous définissons lors de l`instanciation de la WireMockRule dans notre test. Remplacement de l`URL de l`API de temps réel avec un faux dans nos tests est rendu possible en injectant l`URL dans notre classe WeatherClient`constructeur: J`ai écrit un microservice simple, y compris une suite de test avec des tests pour les différentes couches de la pyramide de test. Malheureusement, le concept de la pyramide de test tombe un peu court si vous jetez un oeil de plus près. Certains prétendent que soit la dénomination ou certains aspects conceptuels de la pyramide de test de Mike Cohn ne sont pas idéales, et je dois d`accord. D`un point de vue moderne, la pyramide des tests semble trop simpliste et peut donc être trompeuse. Sélénium a besoin d`un navigateur qu`il peut démarrer et utiliser pour exécuter ses tests. Il y a plusieurs soi-disant «drivers» pour différents navigateurs que vous pourriez utiliser.

Choisissez un (ou plusieurs) et ajoutez-le à votre Build. gradle. Quel que soit le navigateur que vous choisissez, vous devez vous assurer que tous les devs dans votre équipe et votre serveur CI ont installé la version correcte du navigateur localement. Cela peut être assez douloureux pour rester synchronisé. Pour Java, il y a une jolie petite bibliothèque appelée webdrivermanager qui peut automatiser le téléchargement et la mise en place de la bonne version du navigateur que vous souhaitez utiliser. Ajoutez ces deux dépendances à votre Build. gradle et vous êtes bon d`aller: en termes simples, cela signifie que vous remplacez une chose réelle (par exemple une classe, un module ou une fonction) avec une version fausse de cette chose. La version fausse ressemble et agit comme la vraie chose (réponses aux mêmes appels de méthode) mais répond avec des réponses en conserve que vous définissez vous-même au début de votre test unitaire. Maintenant, nous allons faire le test.

Le résultat est positif comme prévu: le deuxième test fonctionne de façon similaire, mais teste le scénario où la méthode testée ne trouve pas une personne pour le paramètre donné. J`ai mentionné avant que “tests unitaires” est un terme vague, c`est encore plus vrai pour “tests d`intégration”. Pour certaines personnes, le test d`intégration signifie tester la totalité de la pile de votre application connectée à d`autres applications au sein de votre système. J`aime traiter les tests d`intégration plus étroitement et tester un point d`intégration à la fois en remplaçant les services distincts et les bases de données par des doubles de test.