java - 在 Spring Boot 中使用嵌入式 stub /虚拟应用程序进行测试

标签 java spring-boot spring-boot-test

我正在尝试为我的 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/

相关文章:

spring-boot - @WebMvcTest, @DataJpaTest 我想知道它是 "Unit Tests"还是 "Integration Tests."

java - Axis 2 和 Rampart 如何在 policy.xml 中仅指定传出安全性

java - 如何使用列表的最终实例设计链表

java - Spring Boot 内置 Tomcat 服务器 - 相对于普通 Spring 应用程序有什么优势

java - @Mock jpaRepository 调用真实的保存方法 @MockBean 调用模拟方法

spring-boot - 无法使用 Spring Boot Test 测试自定义存储库

spring-boot - 如何在 Mockito 测试中修复 RestTemplate.exchange 的空值响应?

java - 如何更改 Gradle 中的 jar 输出目录?

java - 在Android中播放yuv帧

java - 方法不允许,状态 = 405 尝试创建删除实体按钮