You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MockMvc测试Spring端点时andDo(print())方法无法解析求助

解决MockMvc的andDo(print())方法无法识别的问题

嗨,刚接触JUnit和MockMvc遇到这个问题很正常,别着急~这个问题本质是你没导入print()方法所在的静态类,再配合正确的依赖就能解决,一步步来:

1. 先导入必要的静态方法

print()是MockMvcResultHandlers类提供的静态工具方法,你需要在代码顶部添加静态导入:

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

如果不想用静态导入,也可以直接写全限定调用(虽然没那么方便):

.andDo(MockMvcResultHandlers.print())

2. 确保依赖正确

如果你用的是Spring Boot项目

只需要确保pom.xml(Maven)或build.gradle(Gradle)里包含spring-boot-starter-test依赖,它已经整合了MockMvc所需的所有组件:

Maven 配置:

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

Gradle 配置:

testImplementation 'org.springframework.boot:spring-boot-starter-test'

如果你用的是传统Spring项目

需要单独引入spring-test依赖,版本要和你的Spring核心版本保持一致:

Maven 配置:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>你的Spring版本号</version>
    <scope>test</scope>
</dependency>

3. 补充完整的测试代码示例

加上静态导入后,你的代码应该能正常运行了,顺便提个小细节:delete路径最好加前缀/避免上下文路径问题,完整代码如下:

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

// Spring Boot测试需添加对应注解
// @SpringBootTest
// @AutoConfigureMockMvc
public class YourTestClass {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void compareDeleteTest() throws Exception{
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Content-Type", "application/json");
        RequestBuilder requestBuilder = MockMvcRequestBuilders.delete("/api/compare/3")
                .headers(httpHeaders);
        mockMvc.perform(requestBuilder)
                .andDo(print()); // 现在应该能正常识别啦
    }
}

内容的提问来源于stack exchange,提问作者Tsao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 10:02:28