首页
学习
活动
专区
工具
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.2K30

实战: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

98320
  • 微服务架构之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

    【译】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

    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.5K20

    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) 都可以启动Spring的ApplicationContext @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:为 Spring 和 Spring 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用于模拟依赖项等。

    14710

    使用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 的加载器模块。

    95030
    领券