国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot 如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot 如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

SpringBoot 如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試

介紹

SpringBoot 是一個(gè)流行的 Java Web 開發(fā)框架,它提供了一些強(qiáng)大的工具和庫,使得開發(fā) Web 應(yīng)用程序變得更加容易。其中之一是 MockMvc,它提供了一種測(cè)試 SpringBoot Web 應(yīng)用程序的方式,可以模擬 HTTP 請(qǐng)求和響應(yīng)的行為。

在本文中,我們將介紹 SpringBoot 中的 MockMvc,演示如何使用它進(jìn)行 Web 集成測(cè)試。

SpringBoot 如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試,Java 教程,spring boot,前端,集成測(cè)試

MockMvc

MockMvc 是 SpringFramework 中的一個(gè)測(cè)試工具,用于模擬 HTTP 請(qǐng)求和響應(yīng)的行為。MockMvc 可以模擬發(fā)送 GET、POST、PUT、DELETE 等 HTTP 請(qǐng)求,并驗(yàn)證響應(yīng)的狀態(tài)碼、內(nèi)容類型和響應(yīng)體等。

在 SpringBoot 中,我們可以使用 MockMvc 進(jìn)行 Web 集成測(cè)試。下面是一個(gè)簡(jiǎn)單的例子:

@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testGetUser() throws Exception {
        mockMvc.perform(get("/users/{id}", 1))
                .andExpect(status().isOk())
                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
                .andExpect(jsonPath("$.id").value(1))
                .andExpect(jsonPath("$.name").value("John Doe"))
                .andExpect(jsonPath("$.age").value(25));
    }
}

在上面的代碼中,我們使用 @SpringBootTest 和 @AutoConfigureMockMvc 注釋 SpringBoot 應(yīng)用程序和 MockMvc。然后,我們使用 @Autowired 注釋注入 MockMvc 對(duì)象。最后,我們使用 perform 方法模擬發(fā)送 GET 請(qǐng)求,并使用 andExpect 方法驗(yàn)證響應(yīng)的狀態(tài)碼、內(nèi)容類型和響應(yīng)體等。

如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試

要使用 MockMvc 進(jìn)行 Web 集成測(cè)試,請(qǐng)按照以下步驟操作:

第 1 步:添加依賴

在 pom.xml 文件中添加以下依賴:

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

在上面的代碼中,我們添加了一個(gè) spring-boot-starter-test 依賴,它包含了許多測(cè)試相關(guān)的依賴。

第 2 步:?jiǎn)⒂?MockMvc

在測(cè)試類中添加 @SpringBootTest 和 @AutoConfigureMockMvc 注釋啟用 MockMvc。

@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
    ...
}

在上面的代碼中,我們使用 @SpringBootTest 注釋啟用 SpringBoot 應(yīng)用程序,并使用 @AutoConfigureMockMvc 注釋啟用 MockMvc。

第 3 步:注入 MockMvc 對(duì)象

在測(cè)試類中使用 @Autowired 注釋注入 MockMvc 對(duì)象。

@Autowired
private MockMvc mockMvc;

在上面的代碼中,我們使用 @Autowired 注釋注入 MockMvc 對(duì)象。

第 4 步:模擬 HTTP 請(qǐng)求

使用 MockMvc 對(duì)象的 perform 方法模擬 HTTP 請(qǐng)求。

mockMvc.perform(get("/users/{id}", 1))

在上面的代碼中,我們使用 get 方法模擬發(fā)送 GET 請(qǐng)求。在路徑中使用占位符 {id},可以在后面的參數(shù)列表中指定實(shí)際的 id 值。

第 5 步:驗(yàn)證響應(yīng)狀態(tài)碼

使用 andExpect 方法驗(yàn)證響應(yīng)的狀態(tài)碼。

.andExpect(status().isOk())

在上面的代碼中,我們使用 status 方法獲取響應(yīng)的狀態(tài)碼,并使用 isOk 方法驗(yàn)證狀態(tài)碼是否為 200。

第 6 步:驗(yàn)證響應(yīng)內(nèi)容類型

使用 andExpect 方法驗(yàn)證響應(yīng)的內(nèi)容類型。

.andExpect(content().contentType(MediaType.APPLICATION_JSON))

在上面的代碼中,我們使用 content 方法獲取響應(yīng)的內(nèi)容類型,并使用 contentType 方法驗(yàn)證內(nèi)容類型是否為 JSON。

第 7 步:驗(yàn)證響應(yīng)體

使用 andExpect 方法驗(yàn)證響應(yīng)的內(nèi)容。

.andExpect(jsonPath("$.id").value(1))
.andExpect(jsonPath("$.name").value("John Doe"))
.andExpect(jsonPath("$.age").value(25));

在上面的代碼中,我們使用 jsonPath 方法獲取響應(yīng)體中的 JSON 屬性,并使用 value 方法驗(yàn)證屬性的值是否正確。

示例

以下是一個(gè)完整的示例:

UserController.java

@RestController
@RequestMapping("/users")
public class UserController {

    private List<User> users = new ArrayList<>();

    @GetMapping("/{id}")
    public User getUser(@PathVariable int id) {
        return users.stream()
                .filter(user -> user.getId() == id)
                .findFirst()
                .orElse(null);
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        int nextId = users.size() + 1;
        user.setId(nextId);
        users.add(user);
        return user;
    }

    @PutMapping("/{id}")
    public User updateUser(@PathVariable int id, @RequestBody User user) {
        User existingUser = users.stream()
                .filter(u -> u.getId() == id)
                .findFirst()
                .orElse(null);
        if (existingUser != null) {
            existingUser.setName(user.getName());
            existingUser.setAge(user.getAge());
        }
        return existingUser;
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable int id) {
        users.removeIf(user -> user.getId() == id);
    }

}

UserControllerTest.java

@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testGetUser() throws Exception {
        mockMvc.perform(get("/users/{id}", 1))
                .andExpect(status().isOk())
                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
                .andExpect(jsonPath("$.id").value(1))
                .andExpect(jsonPath("$.name").value("John Doe"))
                .andExpect(jsonPath("$.age").value(25));
    }

    @Test
    public void testCreateUser() throws Exception {
        User user = new User();
        user.setName("Jane Doe");
        user.setAge(30);

        mockMvc.perform(post("/users")
                .contentType(MediaType.APPLICATION_JSON)
                .content(asJsonString(user)))
                .andExpect(status().isOk())
                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
                .andExpect(jsonPath("$.id").isNumber())
                .andExpect(jsonPath("$.name").value("Jane Doe"))
                .andExpect(jsonPath("$.age").value(30));
    }

    @Test
    public void testUpdateUser() throws Exception {
        User user = new User();
        user.setName("Jane Doe");
        user.setAge(30);

        mockMvc.perform(put("/users/{id}", 1)
                .contentType(MediaType.APPLICATION_JSON)
                .content(asJsonString(user)))
                .andExpect(status().isOk())
                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
                .andExpect(jsonPath("$.id").value(1))
                .andExpect(jsonPath("$.name").value("Jane Doe"))
                .andExpect(jsonPath("$.age").value(30));
    }

    @Test
    public void testDeleteUser() throws Exception {
        mockMvc.perform(delete("/users/{id}", 1))
                .andExpect(status().isOk());

        mockMvc.perform(get("/users/{id}", 1))
                .andExpect(status().isOk())
                .andExpect(content().string(""));
    }

    private String asJsonString(Object obj) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            return mapper.writeValueAsString(obj);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}

在上面的示例中,我們創(chuàng)建了一個(gè) UserController 類,并實(shí)現(xiàn)了 GET、POST、PUT 和 DELETE 方法。然后,我們創(chuàng)建了一個(gè) UserControllerTest 類,并使用 MockMvc 對(duì)象模擬發(fā)送 HTTP 請(qǐng)求,并驗(yàn)證響應(yīng)的狀態(tài)碼、內(nèi)容類型和響應(yīng)體等。我們還定義了一個(gè) asJsonString 方法,用于將對(duì)象轉(zhuǎn)換為 JSON 字符串。

結(jié)論

使用 MockMvc 進(jìn)行 Web 集成測(cè)試是一種方便快捷的方式,可以有效地測(cè)試 SpringBoot Web 應(yīng)用程序的功能。在本文中,我們介紹了 MockMvc 的基本概念和用法,并演示了如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試。如果你正在開發(fā) SpringBoot Web 應(yīng)用程序,建議你使用 MockMvc 進(jìn)行集成測(cè)試,以確保你的應(yīng)用程序能夠正常工作。文章來源地址http://www.zghlxwxcb.cn/news/detail-596439.html

到了這里,關(guān)于SpringBoot 如何使用 MockMvc 進(jìn)行 Web 集成測(cè)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何使用Java進(jìn)行集成測(cè)試?

    在Java中進(jìn)行集成測(cè)試有很多種方法,以下介紹一種比較常見的基于JUnit框架的集成測(cè)試方法: 確定需要測(cè)試的代碼 首先需要確定需要進(jìn)行集成測(cè)試的代碼,可以是整個(gè)應(yīng)用程序,也可以是特定的模塊或者方法。 配置測(cè)試環(huán)境 在測(cè)試環(huán)境中創(chuàng)建測(cè)試數(shù)據(jù)庫、配置文件、mock對(duì)

    2024年02月11日
    瀏覽(19)
  • SpringBoot使用MockMVC單元測(cè)試Controller

    SpringBoot使用MockMVC單元測(cè)試Controller

    對(duì)模塊進(jìn)行集成測(cè)試時(shí),希望能夠通過輸入U(xiǎn)RL對(duì)Controller進(jìn)行測(cè)試,如果通過啟動(dòng)服務(wù)器,建立http client進(jìn)行測(cè)試,這樣會(huì)使得測(cè)試變得很麻煩,比如啟動(dòng)速度慢,測(cè)試驗(yàn)證不方便,依賴網(wǎng)絡(luò)環(huán)境等,這樣會(huì)導(dǎo)致測(cè)試無法進(jìn)行,為了可以對(duì)Controller進(jìn)行測(cè)試,可以 通過引入Mock

    2024年01月18日
    瀏覽(24)
  • Spring Test中使用MockMvc進(jìn)行上傳文件單元測(cè)試時(shí),報(bào)NullPointerException

    問題 : MockMvc peform在集成測(cè)試中返回nullPointerException 原因 : springboot-2.x版本以上,當(dāng)你添加依賴spring_boot_starter_test后,可以在內(nèi)部看到自帶了jupiter測(cè)試核心模塊,也就是 junit5,junit5(jupiter測(cè)試引擎)不再支持junit4(vintage測(cè)試引擎),在使用時(shí)自然不再需要spring來提供了,

    2024年02月14日
    瀏覽(27)
  • springBoot集成webSocket并使用postMan進(jìn)行測(cè)試

    springBoot集成webSocket并使用postMan進(jìn)行測(cè)試

    簡(jiǎn)單來講,webSocket是一種在http協(xié)議基礎(chǔ)上的另一種新協(xié)議,叫ws協(xié)議。 http協(xié)議是單工通信,客戶端發(fā)起請(qǐng)求,服務(wù)端收到請(qǐng)求并處理,返回給客戶端,然后客戶端收到服務(wù)端的請(qǐng)求。 ws協(xié)議是全雙工通信,客戶端發(fā)起請(qǐng)求后,相當(dāng)于搭建了一個(gè)通道,在不斷開的情況下,在

    2024年02月02日
    瀏覽(17)
  • Spring Boot 進(jìn)行 MockMvc 單元測(cè)試的實(shí)例

    在Spring Boot應(yīng)用程序中,使用MockMvc進(jìn)行單元測(cè)試是一種有效的方式,可以驗(yàn)證控制器的行為和API的正確性。在這篇博客中,我們將介紹如何使用MockMvc對(duì)用戶控制器(UserController)進(jìn)行測(cè)試,該控制器涉及用戶信息的增刪改查操作。 UserController測(cè)試類 解釋和注意事項(xiàng) MockMvc的注

    2024年01月17日
    瀏覽(18)
  • SpringBoot測(cè)試(Junit單元測(cè)試、MockMvc測(cè)試Http請(qǐng)求 )

    SpringBoot測(cè)試(Junit單元測(cè)試、MockMvc測(cè)試Http請(qǐng)求 )

    Java知識(shí)點(diǎn)總結(jié):想看的可以從這里進(jìn)入 2.13、測(cè)試 測(cè)試就是在開發(fā)過程中用來檢測(cè)某一段代碼的功能是否能正確執(zhí)行,Spring Boot 項(xiàng)?創(chuàng)建時(shí)會(huì)默認(rèn)單元測(cè)試框架 spring-boot-test,它Spring Test、JUnit等其他測(cè)試框架結(jié)合起來(JUnit 5、AssertJ、Hamcrest、Mockito、JSONassert、JsonPath、Spring

    2024年02月06日
    瀏覽(49)
  • springboot的MockMvc單元測(cè)試(測(cè)試controller層方法)

    springboot的MockMvc單元測(cè)試(測(cè)試controller層方法)

    所謂單元測(cè)試,即用一小段可以獨(dú)立運(yùn)行的代碼,去測(cè)試一個(gè)比較底層的單獨(dú)的功能。 如果需要對(duì)controller層的方法進(jìn)行測(cè)試,那么我們可以使用springboot提供的MockMvc,模擬客戶端的請(qǐng)求來測(cè)試。 ???只有我們?nèi)?zhí)行測(cè)試類時(shí),該依賴才會(huì)被加載 ? 該注解為類級(jí)別批注,該注

    2024年02月15日
    瀏覽(26)
  • SpringBoot 實(shí)戰(zhàn):JUnit5+MockMvc+Mockito 做好單元測(cè)試

    SpringBoot 實(shí)戰(zhàn):JUnit5+MockMvc+Mockito 做好單元測(cè)試

    因?yàn)槔^承了 spring-boot-starter-parent ,所以我們依賴的 spring-boot-starter-test 不需要寫具體的版本,可以直接集成父級(jí)的版本定義。其中, spring-boot-starter-web 是用于提供 REST API 的 web 容器, spring-boot-starter-test 可以提供各種測(cè)試框架的, spring-boot-maven-plugin 是將 SpringBoot 應(yīng)用打包為

    2024年04月15日
    瀏覽(28)
  • 軟件測(cè)試——功能測(cè)試,使用Java,IDEA,Selenium進(jìn)行web自動(dòng)化測(cè)試

    軟件測(cè)試——功能測(cè)試,使用Java,IDEA,Selenium進(jìn)行web自動(dòng)化測(cè)試

    視頻地址:03-web元素定位ID_嗶哩嗶哩_bilibili p1.下載jdk,maven,idea p2.配置java-selenium環(huán)境正式開始: (1)創(chuàng)建代碼: (2)第一次運(yùn)行會(huì)報(bào)錯(cuò):要下載東西? (3) Windows系統(tǒng)的輸入如下: ?(4)完成如下:(這個(gè)用的是Linux系統(tǒng)的) p3:web元素定位ID (1)先改一下之前的代碼 ?(

    2024年02月08日
    瀏覽(39)
  • docker安裝kafka,并集成springboot進(jìn)行測(cè)試

    docker安裝kafka,并集成springboot進(jìn)行測(cè)試

    大家好,今天我們開始學(xué)習(xí)kafka中間件,今天我們改變一下策略,不刷視頻學(xué)習(xí),改為實(shí)踐學(xué)習(xí),在網(wǎng)上找一些案例功能去做,來達(dá)到學(xué)習(xí)實(shí)踐的目的。 首先,是安裝相關(guān)組件。 1. docker安裝 安裝 1.1 yum-utils軟件包 1.2?設(shè)置阿里云鏡像 1.3?安裝docker 1.4?啟動(dòng)docker 1.5?測(cè)試 至此

    2023年04月25日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包