JaCoCo est un outil très connu dans le monde Java qui permet de générer des rapports de code coverage au format xml et html.
L’intérêt sera souvent de donner le rapport au format xml à d’autres outils (Codecov ou Sonar par exemple) pour suivre le code coverage de votre projet.
Nous allons voir pas à pas comment configurer Jacoco pour qu’il génère un rapport prenant en compte les tests unitaires et les tests d’intégration sur un même rapport.
Générer un fichier d’exécution pour les tests unitaires
Les fichiers .exec sont des fichiers générés par JaCoCo comprenant les données d’exécution. C’est sur la base de ces fichiers que les rapports sont générés.
Ici on dit simplement à Jacoco ‘’prépare une propriété qui va référencer le runtime JaCoCo qui sera passé lors de l’exécution des TU et génère un rapport après l’exécution des tests unitaires.
Générer un fichier d’exécution pour les tests d’intégration
Ce sera exactement comme pour les tests unitaires. On va commander l’exécution de:
L’idée va être de prendre les deux fichiers .exec générés par JaCoCo lors des étapes précédentes et de les fusionner dans un seul fichier.
Une fois fait, il suffit de dire à JaCoCo de se baser sur le fichier .exec final pour générer un rapport comprenant le coverage des tests unitaires et de ceux des tests d’intégration.
Astuce: si vous voulez que vos tests Cucumber soient pris en compte pour le code coverage généré par JaCoCo, il suffit de suffixer le nom de votre Runner par IT afin qu’ils soient joués au mvn verify.
Oui aucun problème: en mergeant les .exec générés dans le projet, on va logiquement prendre ceux générés dans les différents modules ce qui va aggréger leur coverage et donner un coverage global dans le projet.
Il arrive que la code review nous empêche de merge nos PR assez vite et qu’on se retrouve à tirer une branche d’une branche de travail pour avancer 😔
Une fois la première PR squash et merge, la PR issue de la seconde branche se retrouve avec des conflits 💥
Si vous avez déjà vécu cette situation, il y a de bonnes chances que vous ayez cherry-pick vos commits de travail sur une...
Il arrive souvent que pour tester unitairement des règles de validation, on doive tester le même cas mais avec des exemples différents. Sans tests paramétrés, ça revient à faire un test par cas ce qui peut alourdir notre fichier de tests.
On va voir comme...
Avant .Net 8, tester du code qui utilise DateTime.Now() n’était pas trivial, on devait faire en sorte de mocker la Clock dans nos tests. Depuis .Net 8, c’est beaucoup plus facile grâce à TimeProvider inclut par défaut !
En deux mots, TimeProvider est une...
La gestion des erreurs de son API est très importante pour que les consommateurs puissent avoir une description claire du problème mais c’est souvent fastidieux à maintenir.
On va voir comment avoir des statuts de réponse cohérent et des messages d’erre...
Y’a moyen d’avoir la meme chose pour un projet multimodules ? (module1, module2)
Oui aucun problème: en mergeant les .exec générés dans le projet, on va logiquement prendre ceux générés dans les différents modules ce qui va aggréger leur coverage et donner un coverage global dans le projet.