SpringBoot Rest接口 Mock 单元测试—学习总结

本文详细介绍了在SpringBoot项目中如何使用MockMvc进行Rest接口的单元测试,内容涵盖添加pom.xml依赖、编写单元测试类、MockMvc的工作原理及核心API的使用,如perform()、andExpect()和andDo()等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 本篇主要是学习在SpringBoot 使用Mock 测试 web API接口。

 

1. 添加 pom.xml 依赖

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.1.0.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <java.version>1.8</java.version>
</properties>

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
   </dependency>
</dependencies>

<build>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <configuration>
                <fork>true</fork>
            </configu
### 如何在 Spring Boot 中进行接口测试的最佳实践 #### 使用 JUnit 和 Mockito 进行单元测试 为了确保应用程序的各个部分按预期工作,在编写集成测试之前应该先创建单元测试。JUnit 是 Java 生态系统中最流行的测试框架之一,而 Mockito 则用于模拟对象以便更容易地测试类的行为。 ```java import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @RunWith(SpringRunner.class) @WebMvcTest(controllers = MyController.class) public class MyControllerTest { @Autowired private MockMvc mockMvc; @MockBean private MyService myService; @Test public void shouldReturnDefaultMessage() throws Exception { when(myService.getMessage()).thenReturn("Hello, World!"); this.mockMvc.perform(get("/api/message")) .andExpect(status().isOk()) .andExpect(content().string(containsString("Hello"))); verify(myService).getMessage(); } } ``` 此代码片段展示了如何通过 `@WebMvcTest` 注解来加载 Web 层组件,并利用 `Mockito` 来替换服务层逻辑,从而专注于控制器的功能验证[^1]。 #### 编写 RESTful API 测试案例 对于 RESTful 接口来说,可以借助于 `RestAssured` 或者内置的 `MockMvc` 工具来进行 HTTP 请求级别的测试。这些工具允许开发者发送 GET/POST 等类型的请求给目标端点,并断言响应的状态码、头部信息以及返回的数据结构是否符合预期。 ```java @Test void testGetUserById() { given() .pathParam("id", 1L). when() .get("/users/{id}"). then() .statusCode(HttpStatus.OK.value()) .body("name", equalTo("John Doe")); } ``` 上述例子说明了怎样使用 RestAssured 库执行简单的获取用户详情的操作,并检查服务器回复的内容是否正确[^2]. #### 配置测试环境与属性文件管理 当涉及到不同环境下运行相同的测试集(比如开发、预发布和生产),应当合理配置外部化配置机制。可以通过 application-test.yml 文件定义特定于测试场景下的参数设定;另外还可以考虑采用 Testcontainers 技术动态启动真实的数据库实例或其他依赖资源作为测试的一部分。 ```yaml spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MYSQL spring.datasource.driverClassName=org.h2.Driver spring.jpa.hibernate.ddl-auto=create-drop ``` 这段 YAML 片段指定了 H2 数据库连接字符串以及其他必要的 Hibernate 设置,适用于内存中的快速迭代测试周期内[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值