SpringBoot测试方法编写

本文介绍如何在SpringBoot项目中使用MyBatis-Plus进行接口测试,包括配置依赖、编写测试类和方法,以及运行测试验证接口功能。

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

开发过程中,写出的接口方法需要测试。为了测试这些方法,需要从Spring环境中拿到这些接口方法所属的类的实例对象。所以需要编写SpringBoot的测试方法。下面以测试mybatis-plus接口为例编写测试方法,项目名:SpringbootFeatures.

1、pom文件


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

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 测试相关 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!-- mybatis-plus相关 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!-- mysql数据库相关 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

2、测试类

注意:@org.junit.Test不要写错包名。

package com.sun9528.spingbootFeatures;


import com.sun9528.spingbootFeatures.Dao.PlusMapper;
import com.sun9528.spingbootFeatures.Entity.User;

import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;


@RunWith(SpringRunner.class)  //----->为了让测试方法在Spring容器环境下执行,@Autowired才会生效
@SpringBootTest
public class TestPlus {

    @Autowired
    private PlusMapper plusMapper;


    @org.junit.Test
    public void testInsert() {
        System.out.println(("----- insert method test ------"));
        User userInsert = new User();
        userInsert.setId(6L);
        userInsert.setAge(16);
        userInsert.setEmail("Kobe@baomidou.com");
        userInsert.setName("Kobe");
        plusMapper.insert(userInsert);

    }

}

运行testInsert()方法可测试接口plusMapper.insert(...)接口。

 

 

 

 

### 编写 Spring Boot 测试类 编写Spring Boot测试类时,`@SpringBootTest` 注解用于标记这是一个Spring Boot集成测试类[^2]。此注解允许加载整个应用程序上下文,并提供多种配置选项来控制测试环境的行为。 对于创建一个简单的控制器测试案例来说,在测试类上添加 `@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)` 可以让每次运行测试时都随机分配端口给嵌入式的HTTP服务器实例,从而避免端口冲突问题。下面是一个具体的例子: ```java 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.boot.test.mock.mockito.MockBean; import org.springframework.test.web.servlet.MockMvc; @WebMvcTest(controllers = BookController.class) public class BookControllerTest { @Autowired private MockMvc mockMvc; @MockBean private BookService bookService; @Test void shouldReturnDefaultMessage() throws Exception { this.mockMvc.perform(get("/api/v1/books")) .andExpect(status().isOk()) .andExpect(content().string(containsString("Hello, World"))); } } ``` 在这个示例中,使用了 `@WebMvcTest` 来代替 `@SpringBootTest` ,因为只针对MVC层进行切片测试可以减少不必要的组件被初始化,提高测试速度和效率。同时引入了 `Mockito` 库中的 `@MockBean` 对象作为服务层的替身,以便于隔离依赖关系并专注于验证控制器逻辑本身的功能正确性。 为了更全面地覆盖业务流程以及数据库交互等情况,则需要采用完整的应用上下文来进行全栈式测试,此时应当选用 `@SpringBootTest` 并配合其他必要的配置项完成相应的功能验证工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值