SpringBoot测试代码status()、content()、equalTo()无法导入

本文详细介绍了在SpringBoot项目中进行单元测试时遇到的问题及解决方案,重点讲解了如何正确使用status(), content() 和equalTo()方法来验证HTTP响应状态码及返回内容。

今日学习SpringBoot教程,但是在做单元测试时遇到一个问题,status()、content()、equalTo()报错,百思而不知其解,于是终于在网上找到了解决办法,这时便记录下来。

HelloTests类代码

package com.neo.SpringBoot;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import com.neo.SpringBoot.controller.HelloWorldController;

@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTests {

    private MockMvc mvc;

    @Before
    public void setUp() throws Exception {
        mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
    }

    @Test
    public void getHello() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Hello World")));
    }

}

HelloWorldController类代码

package com.neo.SpringBoot.controller;

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

@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public String index() {
        return "Hello World";
    }
}

需要导入的方法

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
### 关于 Spring Boot 测试代码示例 对于编写基于 `@WebMvcTest` 注解的测试案例,可以创建一个专门针对控制器层的测试类来确保只加载必要的组件而不是整个应用程序上下文。下面是一个具体的例子: ```java import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.web.servlet.MockMvc; @WebMvcTest(controllers = ExampleController.class) // 指定要测试的控制器 public class ExampleControllerTests { @Autowired private MockMvc mockMvc; @Test void shouldReturnDefaultMessage() throws Exception { this.mockMvc.perform(get("/api/example")) // 发起GET请求到指定路径 .andExpect(status().isOk()) // 验证HTTP状态码为200 OK .andExpect(content().string("Hello, World")); // 验证返回的内容字符串匹配预期值 } } ``` 上述代码展示了如何利用 `MockMvc` 对象发送 HTTP GET 请求给 `/api/example` 路径,并检查服务器端是否正确处理了该请求以及响应的状态码和消息体。 #### 控制器实现样例 为了使上面提到的单元测试能够正常工作,还需要有一个简单的 RESTful Web Service 实现作为被测对象——即 `ExampleController.java` 文件中的内容如下所示: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") class ExampleController { @GetMapping("/example") public String exampleEndpoint(){ return "Hello, World"; } } ``` 此段落描述了一个基本的REST API端点,在接收到客户端发出的对应URL模式下的GET方法调用时会回复一条固定的问候语句[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值