5.5 KiB
JaCoCo 100 % – Tests ajoutés et suites restantes
Ce qui a été fait
1. GlobalExceptionMapper (100 % branches)
- Fichier :
src/main/java/.../exception/GlobalExceptionMapper.java - Modifs :
@ApplicationScopedpour l’injection en test ; ordre desinstanceofdansmapJsonException: InvalidFormatException avant MismatchedInputException (InvalidFormatException étend MismatchedInputException). - Tests ajoutés dans
GlobalExceptionMapperTest.java:mapRuntimeException: RuntimeException, IllegalArgumentException, IllegalStateException, NotFoundException, WebApplicationException (message non vide, null, vide), fallback 500.mapBadRequestException: message présent, message null.mapJsonException: MismatchedInputException, InvalidFormatException, JsonMappingException, JsonParseException (cas par défaut), avec sous-classes/stubs pour les constructeurs Jackson protégés.buildResponse: délégation 3 args → 4 args ; message null ; details null.
2. IdConverter (package util)
- Fichier de test :
src/test/java/.../util/IdConverterTest.java - Couverture :
longToUUID(null, membre, organisation, cotisation, evenement, demandeaide, inscriptionevenement, type inconnu, casse),uuidToLong(null, valeur),organisationIdToUUID,membreIdToUUID,cotisationIdToUUID,evenementIdToUUID.
3. UnionFlowServerApplication
- Fichier de test :
src/test/java/.../UnionFlowServerApplicationTest.java - Vérification de l’injection du bean (pas de couverture de
main()nirun()qui appellentQuarkus.waitForExit()).
4. AuthCallbackResource
- Les tests REST sur
/auth/callbackont été retirés : en environnement test la ressource renvoie 500 (exception dans le bloc try ou en aval). À retester après correction de la cause (ex. config OIDC, format de la réponse, etc.).
État actuel de la couverture (sans exclusions)
- Instructions : ~44 %
- Branches : ~32 %
- Lignes : ~46 %
- Méthodes : ~55 %
- Seuils configurés : 1,00 (100 %) pour LINE, BRANCH, INSTRUCTION, METHOD sur le BUNDLE → le check JaCoCo échoue.
Suites de tests à ajouter pour viser 100 %
Les chiffres ci‑dessous sont issus du rapport JaCoCo (index par package). Pour chaque package, il faut ajouter ou compléter des tests jusqu’à couvrir toutes les lignes/branches/méthodes.
| Package | Instructions | Branches | À faire |
|---|---|---|---|
dev.lions.unionflow.server.service |
35 % | 21 % | ~40 classes, couvrir tous les services (DashboardServiceImpl, MembreService, CotisationService, etc.) |
dev.lions.unionflow.server.resource |
38 % | 41 % | ~33 resources REST : chaque endpoint et chaque branche (erreurs, paramètres, pagination) |
dev.lions.unionflow.server.repository |
59 % | 46 % | ~32 repositories : requêtes personnalisées, critères, cas null |
dev.lions.unionflow.server.entity |
70 % | 50 % | ~42 entités : getters/setters, @PrePersist, méthodes métier, listeners |
dev.lions.unionflow.server.service.mutuelle.credit |
7 % | 0 % | DemandeCreditService : tous les cas et branches |
dev.lions.unionflow.server.service.mutuelle.epargne |
18 % | 0 % | TransactionEpargneService, etc. |
dev.lions.unionflow.server.security |
30 % | - | RoleDebugFilter, autres filtres : tests d’intégration (filtre + requête REST) |
dev.lions.unionflow.server.mapper (racine + sous-packages) |
35–95 % | 21–64 % | Compléter les branches manquantes dans les mappers MapStruct (null, listes vides, champs optionnels) |
de.lions.unionflow.server.auth |
0 % | 0 % | AuthCallbackResource : corriger la 500 en test puis réécrire les tests REST |
dev.lions.unionflow.server.util |
0 % → couvert | - | IdConverter : fait |
dev.lions.unionflow.server.client |
0 % | - | UserServiceClient, RoleServiceClient : tests avec WireMock ou mock du client + services qui les utilisent |
dev.lions.unionflow.server |
0 % | - | UnionFlowServerApplication : main/run non couverts (blocage sur waitForExit) |
En pratique, il faut :
- Services : pour chaque méthode publique, scénarios nominal, erreurs (exceptions, not found), paramètres null/optionnels, et chaque branche (if/else, try/catch).
- Resources : pour chaque
@GET/@POST/…, au moins 200, 404, 400, 401/403 si applicable, et corps de requête/réponse. - Repositories : tests avec base H2 et données de test pour chaque requête dérivée ou
@Query. - Entités : instanciation, setters, callbacks JPA, méthodes métier.
- Mappers : entité → DTO, DTO → entité, listes, champs null.
- Filtres / clients : soit tests d’intégration (REST + filtre), soit tests unitaires avec mocks (ContainerRequestContext, client REST mocké).
Recommandation
-
Option A – Build vert avec seuils réalistes :
Remonter temporairement les seuils JaCoCo (ex. 0,45 en LINE/INSTRUCTION, 0,32 en BRANCH) ou réintroduire des exclusions ciblées (entités, générés MapStruct,*Application) pour que la build passe, puis augmenter progressivement la couverture par packages. -
Option B – Viser 100 % sans exclusions :
Continuer à ajouter des tests package par package en s’appuyant sur le rapport HTML JaCoCo (target/site/jacoco/index.html) et sur ce fichier, jusqu’à atteindre 1,00 sur tout le bundle.
Dernière mise à jour : suite aux ajouts GlobalExceptionMapper, IdConverter, UnionFlowServerApplication et correction de l’ordre mapJsonException.