Testing

Spring Boot 包括许多测试实用工具和支持类,以及一个专门的 starter,它提供通用的测试依赖项。本节解答有关测试的常见问题。

Testing With Spring Security

Spring Security 提供支持以特定用户身份运行测试。例如,以下代码段中的测试将使用具有 ADMIN 角色的身份验证用户运行。

Spring Security 提供与 Spring MVC Test 的全面集成,当使用 @WebMvcTest slice 和 MockMvc 测试控制器时也可以使用该集成。

有关 Spring Security 测试支持的更多详细信息,请参阅 Spring Security 的 {url-spring-security-docs}/servlet/test/index.html[参考文档]。

Structure @Configuration classes for inclusion in slice tests

Slice 测试通过根据组件类型将其限制在有限的组件集合中来工作,以此限制 Spring Framework 的组件扫描。对于任何未使用组件扫描创建的 bean(例如,使用 @Bean 注解创建的 bean),slice 测试将无法在应用程序上下文中包含/排除它们。考虑以下示例:

对于具有上述 @Configuration 类的应用程序的 @WebMvcTest,你可能希望在应用程序上下文中拥有 SecurityFilterChain bean,以便测试控制器端点是否已正确保护。但是,由于 MyConfiguration 不匹配过滤器指定的所有类型,因此不会通过 @WebMvcTest 的组件扫描过滤器将其选中。你可以使用 @Import(MyConfiguration.class) 为测试类添加注释,以明确包含配置。这将加载 MyConfiguration 中的所有 bean,包括在测试 Web 层时不需要的 BasicDataSource bean。将配置类拆分成两个类,将仅导入安全配置。

当特定域的 bean 需要包含在 slice 测试中时,拥有一个单一的配置类可能会效率低下。相反,将应用程序的配置构建为具有特定域 bean 的多个细化类,可以仅为特定的 slice 测试导入它们。