# Tests avec Spring boot --- ## Au programme - Essayer de trouver la raison d'une erreur - Mieux loguer les erreurs - Ajouter des tests - Ajouter d'autres tests - Et enfin rajouter des tests --- ## Une application inutile ... - Avec des dépendances spring boot quand même --- ## Et qui ne fonctionne pas ! --- ## Trouver le bogue - Que dit la log ? - Et en local - **déclenchement du pas à pas du débogueur sur exception** --- ## Améliorer la journalisation des erreurs Une exception correspond à un cas d'exécution "anormal" et sert à le signaler à la bonne personne : - les exceptions métier peuvent remonter à l'utilisateur pour indiquer une mauvaise saisie - les exceptions techniques doivent être loguées (une seule fois) avec la stack trace + message générique à l'utilisateur : - elles sont non contrôlées (encapsuler dans une exceptions technique non contrôlée) - [Spring logue l'erreur pour vous et propose un message générique](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-web-applications.spring-mvc.error-handling) --- ## Il y en a assez des AC ! - Rendre le code résilient : votre application doit répondre même si le WS gestion des contacts est HS - NB : c'est une règle métier en soi - Quel(s) tests pour reproduire les comportements du WS gestion des contacts : - Mocker le serveur avec [@RestClientTest](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing.spring-boot-applications.autoconfigured-rest-client) - Mocker le `restTemplate` pour simuler les pb de certificat avec [@MockBean](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing.spring-boot-applications.mocking-beans) - Lors du refactor, utiliser les structures du langage pour signifier l'absence de contact --- ## JUnit le mal nommé Sert à faire en java des tests : - unitaires - mais aussi des tests d'intégration - des tests fonctionnels --- ## Compléter les tests autour de `ContactService` - Tester les cas nominaux et les cas d'exception - une méthode pour chaque cas de test --- ## Des vrais tests unitaires : `TrustService` Toujours avec @MockBean : vérifier que le calcul du bouléen "trust" est correct selon les différents --- ## Il faudrait aussi tester la logique dans `Contact` --- ## Modifier les props pour les tests - Par exemple pour ne plus alimenter le fichier de logs : modifier la property `logging.file.path` - [Plusieurs méthodes](https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config) --- ## Tester ses endpoints - Test d'intégration ou fonctionnel - on peut quand même mocker les appels aux services externes --- ## Sitographie
{"metaMigratedAt":"2023-06-16T14:51:49.258Z","metaMigratedFrom":"Content","title":"Tests avec Spring boot","breaks":true,"contributors":"[{\"id\":\"97bffc1a-181f-4ccb-956c-fb0fdc5fa2b9\",\"add\":2777,\"del\":0}]"}
    214 views