Aller au contenu

Module 8 – Tests avancés

1. Pourquoi tester ? (pas pour faire joli)

Tester sert à :

Sans tests :


2. Les 3 niveaux (à connaître)

1) Unitaire : une classe, sans Spring
2) Intégration : Spring Boot + DB + config
3) Sécurité : règles d’accès


3. Comment lancer les tests ?

Maven

mvn test
mvn -Dtest=ChienApiIntegrationTest test

IDE


4. @SpringBootTest + MockMvc

Pourquoi MockMvc ?

@SpringBootTest
@AutoConfigureMockMvc
class ChienApiIntegrationTest {

  @Autowired MockMvc mockMvc;

  @Test
  void should_list_chiens() throws Exception {
    mockMvc.perform(get("/api/chiens"))
      .andExpect(status().isOk()); // ici on attend que ça marche
  }
}

5. Préparer des données

Options :


6. Tests de sécurité (exemples complets)

@Test
@WithMockUser(roles="USER")
void user_cannot_create_race() throws Exception {
  mockMvc.perform(post("/api/races").contentType("application/json")
     .content("{"code":"test","nom":"Test"}"))
    .andExpect(status().isForbidden()); // normalement, le user ne peut pas ici
}

7. Testcontainers (DB réelle)

Pourquoi ?

Voir module tests avancés (partie Testcontainers) dans cette formation pour la classe BaseIntegrationTest.


8. Mini-exercices

  1. Ajoutez un test doublon tatouage → 400/409.
  2. Ajoutez un test concours fermé → inscription refusée.