SpringBoot は、テスト フレームワーク MockMvc を使用して HTTP リクエストをシミュレートし、コントローラー インターフェイスをテストします。

シーン

Java での単体テスト junit.Assert アサーション、Mockito シミュレーション オブジェクト、検証シミュレーション結果の検証、Java8 での lambda の Peak メソッドの使用:

Java での単体テスト junit.Assert アサーション、Mockito シミュレーション オブジェクト、検証シミュレーション結果の検証、Java8 での lambda の Peak メソッドの使用_assert java8_Overbearing rogue temperament ブログ - CSDN ブログ

上記では、開発プロセスにおけるいくつかのテスト方法について説明しました。

コード内の特定のコントローラー インターフェイスを直接テストする必要がある場合は、毎回プロジェクトを開始した後に postman やその他のテスト ツールを使用してテストするだけでなく、

MockMvc をテストに使用することもできます。

モックMVC

MockMvc は、HTTP リクエストとレスポンスをシミュレートするための Spring フレームワークのテスト フレームワークです。

MockMvc は、Web アプリケーションの環境をシミュレートし、Spring MVC のコントローラーをテストできます。

MockMvc を使用すると、実際に HTTP リクエストを送信して応答を受信することなく、Spring MVC コントローラーの動作と出力をテストできます。

MockMvc は、Spring MVC のリクエストと応答をモックする方法を提供し、テストに Spring MVC コントローラーを使用できます。

MockMvc は、リクエスト メソッド、リクエスト ヘッダー、リクエスト パラメータ、リクエスト本文、応答ステータス、応答ヘッダー、応答本文を含む HTTP リクエストと応答をシミュレートできます。

SpringBoot では、Web 統合テストに MockMvc を使用できます。

注記:

ブログ:
Domineering Rogue Temperament_C#、アーキテクチャ ロード、SpringBoot-CSDN ブログ

成し遂げる

1. SpringBoot プロジェクトに次の依存関係を追加します。

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

もちろん、SpringBoot に必要な他の依存関係も追加する必要があります

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

その他のビジネスの依存関係は、それぞれのニーズに応じて決定されます。

2. 新しいテスト コントローラーを作成します。

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. 新しい単体テスト方法

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);
        }
    }
}

ここでは、上記のコントローラーへの 5 つのリクエストをシミュレートします。

4. MockMvc には、HTTP リクエストとレスポンスをシミュレートするための他の多くのメソッドも用意されており、詳細についてはその API を参照してください。

具体的な使用例は以下を参照してください。

SpringBoot でのインターフェイス冪等性実装スキーム - 注文の繰り返し送信を防ぐためのカスタム アノテーション + Redis + インターセプター実装:

SpringBoot でのインターフェイス冪等性実装スキーム - カスタム アノテーション + Redis + インターセプターで注文の繰り返し送信を防止 - プログラマーが求めた

おすすめ

転載: blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131911395