在 SpringBoot 中使用嵌入式存根/虚拟应用程序进行测试



我正在尝试为我的 SpringBoot 微服务编写一个集成测试,该微服务与产品生态系统中的另一个服务进行交互。 由于这种测试被认为是功能/集成测试(取决于您使用的命名法(,因此通常在某些开发环境中完成。 但是,我想测试我的服务与与 RPC 连接的 STUB/虚拟应用程序之间的基本交互(因此不完全是典型的 TestRestTemplate 测试(。 我知道有一种方法可以在启动 Spring 上下文时嵌入服务,但从未自己做过。 有没有人对上层有任何经验,或者我可以探索一些有用的链接。

我在测试中使用了WireMock来模拟我想要测试的外部服务,这些服务通过HTTP进行通信。
我的测试类用@SpringBootTest注释也用@ContextConfiguration注释。在属性@ContextConfiguration中,我显式指定了为相关测试设置 Spring 上下文所需的配置类。在这里,我还可以包含其他配置类,在这些配置类中,我创建了仅在测试中使用的 bean。在测试配置类中,我还可以出于测试目的覆盖 bean,创建模拟 bean 等。

请注意,默认情况下,Spring Boot 2.1 及更高版本禁用 Bean 覆盖。可以通过将以下属性设置为 true:
spring.main.allow-bean-definition-overriding=true
来启用它 若要为单个测试设置属性,请使用如下所示的@TestPropertySource注释:

@TestPropertySource(properties = {
"spring.main.allow-bean-definition-overriding=true"
})

最新更新