我正在尝试为我的 SpringBoot 微服务编写一个集成测试,该微服务与产品生态系统内的另一个服务进行交互。 由于这种测试是考虑功能/集成测试(取决于您使用的术语),因此通常在某些开发环境中完成。 但是,我想测试我的服务和通过 RPC 连接的 STUB/虚拟应用程序之间的基本交互(因此不完全是典型的 TestRestTemplate 测试)。 我知道有一种方法可以在启动 Spring Context 时嵌入服务,但我自己从未这样做过。 有谁对鞋面有任何经验,或者可能有一些我可以探索的有用链接。
最佳答案
我用过WireMock在测试中模拟我想要测试的外部服务,通过 HTTP 进行通信。
我用@SpringBootTest注释的测试类也用@ContextConfiguration注释。在 classes 属性 @ContextConfiguration 中,我明确指定了为相关测试设置 Spring Context 所需的配置类。在这里,我还可以包含其他配置类,在其中创建仅在测试中使用的 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"
})
关于java - 在 Spring Boot 中使用嵌入式 stub /虚拟应用程序进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58195710/