La pyramide des tests
Beaucoup de tests unitaires (rapides, isolent une classe), quelques tests d'intégration (plusieurs couches ensemble), peu de tests end-to-end. Le starter spring-boot-starter-test fournit JUnit 5, Mockito et AssertJ.
Tester le service (unitaire)
On isole CampagneService en simulant le repository avec Mockito.
@Test void rejoindre_refuse_si_cloturee() { Campagne c = new Campagne(); c.setStatut(Statut.CLOTUREE); when(repo.findById("1")).thenReturn(Optional.of(c)); assertThrows(CampagneFermee.class, () -> service.rejoindre("1", new CreerCommandeDTO(1000, "Nexon", "..."))); }
Tester l'API avec MockMvc
MockMvc envoie de vraies requêtes HTTP à l'application (sans serveur réseau) et vérifie la réponse.
@SpringBootTest @AutoConfigureMockMvc class CampagneApiTest { @Autowired MockMvc mvc; @Test void liste_repond_200() throws Exception { mvc.perform(get("/api/campagnes")) .andExpect(status().isOk()); } }
Exécuter les tests en continu
mvn verify lance tous les tests. En intégration continue (parcours Forge, séance 6), ce même mvn verify tourne à chaque Pull Request : on ne fusionne que du vert.
Écris au moins : un test unitaire de calculerPrix (chaque palier), un test « rejoindre refusé si clôturée », et un test MockMvc de GET /api/campagnes. Branche-les dans le workflow GitHub Actions.
- Pyramide : beaucoup d'unitaires, quelques intégrations.
- Mockito pour isoler ; MockMvc pour tester l'API.
mvn verifyen local et en CI.