答案很大程度上取决于集成测试的范围。我将尝试介绍两种主要方法,您可以在Google上等待我们提供更多示例和详细信息。Spring
Boot测试文档也是您的朋友。
切片
Spring Boot提供了称为slices的测试实用程序。例如,有一个片段用于测试您的控制器-
@WebMvcTest此测试将加载用于从HTTP和指定的控制器(
@WebMvcTest(YourController.class))调用应用程序的所有配置。之后,您需要决定如何处理该控制器的依赖项。
您可以:
- 用它们嘲笑他们
@MockBean
。 - 提供真正的实现(或其他配置)
@import
(然后您必须再次处理新导入的依赖项的依赖项)。 - 加载Spring Boot自动配置的其他部分。这可以使用
@AutoConfigureSomething
注释来完成。-所有切片基本上都是自动配置注释的组合,您可以随意将它们添加到测试中。例如,查看一下DataJpaTest上的注释,以了解添加功能来设置带有测试数据库的Spring Boot Data JPA所需的功能。
每个测试最多可以包含一个切片,但是您可以导入任意数量的其他服务,配置,模拟,自动配置等。关键是-选择测试配置。具有新依赖性的新的不相关服务不应破坏现有测试。
SpringBootTest
另一种方法是
@SpringBootTest注释-方向相反-
默认情况下它会加载所有内容,并且您可以使用排除不需要的内容
@MockBean,
@EnableAutoConfiguration(exclude=SomeClass)等等。
添加新服务时,当然存在打破现有测试的危险。-这应该不会经常发生,因为所有内容都是自动配置的,但是仍然有可能,尤其是在具有更多配置的整体中。



