SpringBoot utilise le framework de test MockMvc pour simuler les requêtes HTTP afin de tester l'interface du contrôleur

Scènes

Test unitaire assertion junit.Assert en Java, objet de simulation Mockito, vérification du résultat de la simulation, utilisation de la méthode peek de lambda en Java8 :

Test unitaire junit.Assert assertion en Java, objet fictif Mockito, vérification du résultat simulé de la vérification, utilisation de la méthode peek de lambda dans Java8_assert java8_Overbearing blog sur le tempérament voyou-blog CSDN

Ce qui précède mentionne certaines méthodes de test dans le processus de développement.

Si vous devez tester directement une certaine interface du contrôleur dans le code, en plus d'utiliser Postman et d'autres outils de test pour tester après le démarrage du projet à chaque fois,

Vous pouvez également utiliser MockMvc pour les tests.

MockMvc

MockMvc est un framework de test dans le framework Spring pour simuler les requêtes et les réponses HTTP.

MockMvc peut simuler l'environnement d'une application Web et tester les contrôleurs de Spring MVC.

MockMvc nous permet de tester le comportement et la sortie des contrôleurs Spring MVC sans réellement envoyer de requêtes HTTP ni recevoir de réponses.

MockMvc fournit un moyen de simuler les requêtes et les réponses Spring MVC et peut utiliser les contrôleurs Spring MVC pour les tests.

MockMvc peut simuler des requêtes et des réponses HTTP, y compris la méthode de requête, l'en-tête de requête, les paramètres de requête, le corps de la requête, l'état de la réponse, l'en-tête de la réponse et le corps de la réponse.

Dans SpringBoot, nous pouvons utiliser MockMvc pour les tests d'intégration Web

Note:

Blog :
 Domineering Rogue Temperament_C#, Architecture Road, SpringBoot-CSDN Blog

accomplir

1. Ajoutez les dépendances suivantes au projet SpringBoot

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

Bien entendu, d'autres dépendances requises par SpringBoot doivent également être ajoutées

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

Les autres dépendances métier sont déterminées en fonction de leurs propres besoins.

2. Créez un nouveau contrôleur de test

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

@RestController
public class TestController {

    @GetMapping("/test")
    public String test(@RequestParam("orderId") String orderId, String remark){
        return "success";
    }
}

3. Nouvelle méthode de test unitaire

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@SpringBootTest
class IdempotenceTest {

    @Autowired
    private WebApplicationContext webApplicationContext;

    @Test
    void test1() throws Exception {
        //初始化MockMvc
        MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
        //循环调用5次进行测试
        for (int i = 1; i <= 5; i++) {
            System.out.println("第"+i+"次调用接口");
            //调用接口
            String result = mockMvc.perform(MockMvcRequestBuilders.get("/test")
                    .accept(MediaType.TEXT_HTML)
                    .param("orderId","001")
                    .param("remark","badao"))
                    .andReturn()
                    .getResponse()
                    .getContentAsString();
            System.out.println(result);
        }
    }
}

Ici, nous simulons 5 requêtes au contrôleur ci-dessus.

4. MockMvc fournit également de nombreuses autres méthodes pour simuler les requêtes et les réponses HTTP. Vous pouvez vous référer à son API pour plus de détails.

Un exemple d'utilisation spécifique peut faire référence à

Schéma d'implémentation de l'idempotence de l'interface dans SpringBoot - implémentation d'annotation personnalisée + Redis + intercepteur pour empêcher la soumission répétée de commandes :

Schéma d'implémentation de l'idempotence de l'interface dans SpringBoot - annotation personnalisée + Redis + intercepteur pour empêcher la soumission de commandes répétées - Programmeur recherché

Je suppose que tu aimes

Origine blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131911395
conseillé
Classement