[JAVA] [Spring] Test de sortie d'exception du contrôleur

Les tests pour les contrôleurs qui acceptent les requêtes sont souvent écrits en utilisant MockMvc. Si vous voulez qu'une exception soit sortie, vous pouvez tester la sortie d'exception avec ʻorg.assertj.core.api.Assertions.assertThatThrownBy`.

Exemple

Code produit

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping(value = "exception")
    public void throwException() {
        throw new IllegalStateException("Exception");
    }
}

Code de test


import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;

import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class TestControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void throwExceptionTest() {
        assertThatThrownBy(() ->
                mockMvc.perform(get("/exception"))
        ).hasCause(new IllegalStateException("Exception"));
    }
}

Vous pouvez utiliser .hasCause pour vérifier le contenu de l'exception.

référence

[assertThatThrownBy (Référence)](https://joel-costigliola.github.io/assertj/core-8/api/org/assertj/core/api/Assertions.html#assertThatThrownBy-org.assertj.core.api.ThrowableAssert .ThrowingCallable-) How to prevent NestedServletException when testing Spring endpoints?(stack overflow)

Recommended Posts

[Spring] Test de sortie d'exception du contrôleur
Contrôleur de cadre de test Spring avec Junit
Testez le contrôleur avec Mock MVC dans Spring Boot
Gestion des exceptions Spring Boot
[Tester l'apprentissage / la sortie du code]
Flux de contrôleur de vue du modèle de ressort
[JUnit] Tester l'exception levée
Test de validation d'élément unique de printemps
Test de mémo d'utilisation de Spring Security
Mémo de méthode de contrôleur de démarrage à ressort
Exemple de code pour le test unitaire d'un contrôleur Spring Boot avec MockMvc
Comment faire un test unitaire de Spring AOP
Écrire du code de test avec Spring Boot
Couverture de test de sortie avec Clover + Gradle
Utiliser DBUnit pour le test Spring Boot
Sortie du rapport de test JUnit dans Maven
Sortie du journal Spring Data JPA SQL