首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot Testing @WebMvcTest for a Controller似乎加载上下文中的其他控制器

在使用@WebMvcTest注解测试Spring Boot控制器时,默认情况下,它会仅扫描当前控制器类及其依赖的Bean,而不会加载整个应用程序上下文中的其他控制器。然而,如果你发现它似乎加载了上下文中的其他控制器,可能是由于以下原因:

  1. 组件扫描
    • @WebMvcTest默认会扫描当前包及其子包中的组件。如果你的其他控制器位于当前包或其子包中,它们也会被加载。
    • 你可以通过指定basePackages属性来限制扫描的包范围: @WebMvcTest(basePackages = "com.example.controller")
  2. 自动配置
    • @WebMvcTest会自动配置Spring MVC基础设施,但不会加载完整的应用程序上下文。如果你发现其他控制器被加载,可能是因为某些自动配置类触发了这些控制器的加载。
    • 你可以通过排除某些自动配置类来限制加载: @WebMvcTest(excludeAutoConfiguration = {SomeAutoConfiguration.class})
  3. 依赖注入
    • 如果你的控制器依赖于其他控制器或服务,Spring Boot会尝试解析这些依赖。确保你的测试类中没有无意中引入了不必要的依赖。
  4. 测试配置
    • 你可能在测试配置中显式地声明了其他控制器或Bean。检查你的测试配置文件(如@TestConfiguration)以确保没有引入不必要的组件。

以下是一个简单的示例,展示如何使用@WebMvcTest来测试单个控制器:

代码语言:javascript
复制
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

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(YourController.class)
public class YourControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void testEndpoint() throws Exception {
        mockMvc.perform(get("/your-endpoint"))
               .andExpect(status().isOk());
    }
}

通过上述方法,你可以确保@WebMvcTest仅加载你指定的控制器及其必要的依赖,而不会加载上下文中的其他控制器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot集成测试

原文地址:https://www.baeldung.com/spring-boot-testing 1 概览 在这个教程中,我们会带你看看如果使用 Spring Boot框架编写测试用例。...内容会覆盖单元测试,也会有在执行测试用例前会启动 Spring 上下集成测试。如果你是使用 Spring Boot 新手,查看链接:Spring Boot 介绍。...MockMvc是很灵活,我们可以用它创建任何请求。 9 自动配置测试 Spring Boot自动配置注释一个惊人特性是,它有助于加载完整应用程序某些部分和代码库特定测试层。...你可以读到关于这些注解更多文章,并继续优化集成测试,优化Spring集成测试。 10 结论 在本文中,我们深入探讨了在Spring Boot中进行测试,并展示了怎么更有效编写测试用例。...其他阅读:【Guide to Testing With the Spring Boot Starter Test】https://rieckpil.de/guide-to-testing-with-spring-boot-starter-test

4.1K30

实战:Spring Boot 程序如何做好 Web 层测试

引言 本文将讨论如何针对 Spring Boot 程序 Web 层进行测试,借助 MockMvc API 以及常见测试库实现 Web 层方法测试覆盖,以及如何定制 MockMvc。...注解标记测试类,来指明是一个基于 Spring Boot 单元测试类,运行测试类时,框架会创建一个应用上下文,程序中所有配置过 Bean 都会被创建到这个应用上下文中,比如 Controller...为了加快运行测试用例时应用启动速度,官方提供了专门注解 @WebMvcTest,保证只初始化 Web 层,而不是整个应用上下文,甚至可以指定某个控制器,达到只对特定控制器以及依赖进行初始化作用,大大加速测试用例运行...MockMvc:https://docs.spring.io/spring-framework/docs/5.3.9/reference/html/testing.html#spring-mvc-test-framework...#features.testing.spring-boot-applications.spring-mvc-tests 文章代码示例工程:https://github.com/developer-wenren

97620
  • 【译】Spring 官方教程:使用 Restdocs 创建 API 文档

    创建一个简单应用 为你 Spring 应用程序创建一个 Controller: src/main/java/hello/HomeController.java package hello; import...@EnableAutoConfiguration 告诉 Spring Boot 根据类路径设置,其他bean和各种属性设置开始添加 bean。...@ComponentScan告诉 Spring 寻找包中其他组件,配置和服务hello,让它找到 HelloController。...首先要做是进行简单可用性测试,如果应用程序上下文无法启动,该测试就会失败。...虽然已经有了一个可用性测试,但是你也应该写一些测试用例来确保程序正常工作。一个有用方法是只对 MVC 层 进行测试,就是 Spring 接收传入 HTTP 请求,并将其移交给控制器处理。

    5.3K70

    微服务架构之Spring Boot(六十四)

    45.3.8自动配置测试 Spring Boot自动配置系统适用于应用程序,但有时对于测试来说有点太多了。通常,只需加载测试应用程序“切片”所需配置部分。...45.3.10自动配置Spring MVC测试 要测试Spring MVC控制器是否按预期工作,请使用 @WebMvcTest 注释。...@WebMvcTest 自动配置Spring MVC基础设施并将扫描beans限制 为 @Controller , @ControllerAdvice , @JsonComponent , Converter...可以在附录中找到 @WebMvcTest 启用自动配置设置列表 。 如果您需要注册额外组件,例如Jackson Module ,则可以在测试中使用 @Import 导入其他配置类。...Spring Boot创建 webDriver 范围将替换任何用户定义同名范围。如果您定义自己 webDriver 范围,则在使 用 @WebMvcTest 时可能会发现它停止工作。

    1.1K20

    SpringBoot单元测试(实例)

    4、创建持久化实体类 5、创建数据访问层 6、创建控制器层 7、创建测试用例 7.1、创建基于@WebMvcTest测试用例 7.2、创建基于@SpringBootTest测试用例 8、运行...测试用例 使用@WebMvcTest注解测试Controller时,带有@Service以及别的注解组件类不会自动被扫描注册为Spring容器管理Bean。...@SpringBootTest注解告诉Spring Boot去寻找一个主配置类(一个带@SpringBootApplication类),并使用它启动Spring应用程序上下文,同时注入所有Bean...我们在使用@WebMvcTest注解测试Controller时,带有@Service以及别的注解组件类不会自动被扫描注册为Spring容器管理Bean,而@SpringBootTest注解告诉Spring...Boot去寻找一个主配置类(一个带@SpringBootApplication类),并使用它来启动Spring应用程序上下文,注入所有Bean。

    1.2K20

    重学SpringBoot系列之Mockito测试

    : perform : 模拟执行一个RequestBuilder构建HTTP请求,会执行SpringMVC流程并映射到相应控制器Controller执行。...实现效果和使用MockMvcBuilders构建MockMVC对象效果是一样,但是有一个非常明显缺点:每次做一个接口测试,都会真实启动一次servlet容器,Spring上下加载项目里面定义所有的...---- @SpringBootTest 注解 是用来创建Spring上下文ApplicationContext,保证测试在上下文环境里运行。...SpringBootTest加载完整应用程序并注入所有可能bean,因此速度会很慢 @WebMvcTest注解主要用于controller层测试,只覆盖应用程序controller层,@WebMvcTest...所以WebMvcTest要快得多,因为我们只加载了应用程序一小部分。

    2.4K20

    Springboot+Junit5微服务单元测试编写实践

    ) Junit5中用来替代Junit4@RunWith(SpringJUnit4ClassRunner.class),会启动Spring上下文 @ContextConfiguration 指定加载...不需要Spring上下文时用该注解 模拟类或接口注解 @Mock、@InjectMocks、@Spy Mockito库提供注解;@Mock创建一个Mock对象,@InjectMocks创建一个实例...,尝试将其它有@Mock或@Spy对象注入到该实例中;@Spy默认会调用真实方法,@Mock默认不执行 @MockBean、@SpyBean Spring Boot包装Mockito库提供注解;...@MockBean创建对象默认会加入Spring上下文中,如果Spring上下文存在则替换;@MockBean和@SpyBean区别同@Mock和@Spy区别 方法注解 Test 同Junit4...可以在做数据库单元测试时不使用@SpringBootTest注解启动整个工程 接入层单元测试 @WebMvcTest 同样用来做MVC层单元测试,只注入MVC层相关Bean

    1.6K00

    SpringBoot Test及注解详解

    大家好,又见面了,我是你们朋友全栈君。 一、Spring Boot Test介绍 Spring Test与JUnit等其他测试框架结合起来,提供了便捷高效测试手段。...通过@*Test开启具体模块测试支持,开启后spring加载相关bean,无关内容不会被加载。...和MockMvc搭配使用,可以在不启动web容器情况下,对Controller进行测试(注意:仅仅只是对controller进行简单测试,如果Controller中依赖用@Autowired注入service...(3) @SpringBootTest vs @WebMvcTest(或@*Test) 都可以启动SpringApplicationContext @SpringBootTest自动侦测并加载@SpringBootApplication...或@SpringBootConfiguration中配置,@WebMvcTest不侦测配置,只是默认加载一些自动配置。

    1.7K30

    SpringBoot - 应用程序测试方案

    文章目录 Pre Spring Boot测试解决方案 测试 Spring Boot 应用程序 初始化测试环境 @SpringBootTest @SpringBootTest - webEnvironment...---- Spring Boot测试解决方案 和 Spring Boot 1.x 版本一样,Spring Boot 2.x 也提供了一个用于测试 spring-boot-starter-test...Spring Test & Spring Boot Test:为 SpringSpring Boot 框架提供测试工具。 以上组件依赖关系都是自动导入, 无须做任何变动。 ?...---- 测试 Spring Boot 应用程序 接下来,我们将初始化 Spring Boot 应用程序测试环境,并介绍如何在单个服务内部完成单元测试方法和技巧。...在 Spring Boot 中,@SpringBootTest 注解主要用于测试基于自动配置 ApplicationContext,它允许我们设置测试上下文中 Servlet 环境。

    1.5K30

    SpringBoot 太强了,这些优势你需要了解

    如果你需要使用其他模板引擎,可以按照前面的方法进行配置。 以上就是几个常见Spring Boot起步依赖以及相应Java代码详解。...Spring Boot Testing概念 Spring Boot Testing是一种用于测试Spring Boot应用程序工具集合,它提供了各种测试支持,包括: 集成测试:用于测试整个应用程序或特定模块行为...Spring Boot Testing Java代码示例 在Java代码中,我们可以使用Spring Boot自带测试框架和注解来编写测试用例。...以下是一些常见测试类和注解: @SpringBootTest:用于启动整个应用程序,并进行集成测试。- @WebMvcTest:用于启动Web应用程序,并测试控制器和服务端点。...除了集成测试外,Spring Boot Testing还提供了许多其他类型测试支持,例如@WebMvcTest用于测试Web应用程序、@MockBean用于模拟依赖项等。

    12910

    使用Spring Boot进行单元测试

    代码示例 本文附带代码示例地址:spring-boot-testing 使用 Spring Boot 进行测试系列文章 这个教程是一个系列: 使用 Spring Boot 进行单元测试(本文) 使用...Spring Boot 和 @WebMvcTest 测试SpringMVC controller层 使用 Spring Boot 和 @DataJpaTest 测试JPA持久层查询 通过 @SpringBootTest...进行集成测试 如果你喜欢看视频教程,可以看看Philip课程:测试Spring Boot应用程序课程 依赖项 本文中,为了进行单元测试,我们会使用JUnit Jupiter(Junit 5),Mockito...执行上述测试方法事实上仅需要几毫秒。剩下4.5秒是因为@SpringBootTest告诉了 Spring Boot 要启动整个Spring Boot 应用程序上下文。...所以我们启动整个应用程序仅仅是因为要把RegisterUseCase实例注入到我们测试类中。启动整个应用程序可能耗时更久,假设应用程序更大、Spring需要加载更多实例到应用程序上下文中

    2.4K30

    Spring认证指南:了解如何以最少配置构建应用程序

    Spring Boot 会为您处理这些问题。 Thymeleaf 在类路径上吗?如果是这样,则必须始终将一些 bean 添加到您应用程序上下文中Spring Boot 会为您添加它们。...例如,如果 Thymeleaf 在您路径上,Spring Boot 会自动将 a 添加SpringTemplateEngine到您应用程序上下文中。...@ComponentScan: 告诉 Spring 在包中查找其他组件、配置和服务com/example,让它找到控制器。...使用后@SpringBootTest,我们要求创建整个应用程序上下文。另一种方法是要求 Spring Boot 使用@WebMvcTest....然而,Spring Boot远不止这些。它不仅支持传统 WAR 文件部署,还允许您将可执行 JAR 放在一起,这要归功于 Spring Boot 加载器模块。

    94230

    Spring Boot 2.4.3、2.3.9 版本发布,你准备好了吗?

    新年上班第一天,Spring Boot 就发布了最新2.4.3 、2.3.9 版本。心急小伙伴现在可从 repo.spring.io 和 Maven Central 获得相关内容。...定义为ConnectionFactory,会缺少RabbitMQ监控指标的问题 8、修复当使用JPA延迟存储库时,上下文中ContextRefreshedEvent可能会导致死锁问题 9、修复Gradle...延迟存储库时,上下文中ContextRefreshedEvent可能会导致死锁问题 修复Spring Data Solr support 没有被标记为已弃用问题 修复记录MetricsClientHttpRequestInterceptor.../spring-boot/releases/tag/v2.3.9.RELEASE 如果对本次更新有什么不明白也可以留言进行讨论。...Java延迟加载最佳实践应用示例! 新年新气象,该换一波壁纸了! 不容错过灰度发布系统架构设计 还在封装各种 Util 工具类?这个神级框架帮你解决所有问题!

    2.2K20
    领券