在 Spring Boot 微服务集成测试中使用 WireMock 模拟 gRPC

主要观点:

  • 当代码依赖众多外部服务时,端到端测试因沙箱不可用、环境不稳定等问题而缓慢复杂,模拟测试可平衡测试全面性与执行速度。
  • API 模拟存在权衡,虽快速但缺乏部分真实感,一些缺陷需集成测试发现,好在在整体测试套件中占比小。
  • 介绍用于测试的工具,如 gRPC(基于 HTTP/2 和 Protobuf 的现代网络协议)、Spring Boot(简化 Java 应用开发)、WireMock(创建可靠测试环境的 API 模拟工具)。
  • 在 Spring Boot 中模拟 gRPC 可避免依赖外部沙箱的问题,虽设置模拟服务会引入配置复杂性,但 WireMock 的相关集成可解决。
  • 给出使用这些工具构建 Spring Boot 应用调用 gRPC“echo”服务的步骤,包括创建应用、添加依赖、配置组件、设置集成测试类及添加动态响应等。
  • 目前 WireMock 的 gRPC 扩展对单向流支持有限,双向流不支持,且部分标准 Protobuf 特性存在兼容性问题。

关键信息:

  • 端到端测试在依赖外部服务时的问题及模拟测试的优势。
  • 各种测试工具的特点及作用。
  • 在 Spring Boot 中模拟 gRPC 的步骤及相关配置。
  • WireMock gRPC 扩展的当前局限性。

重要细节:

  • 使用 WireMock 的 Spring Boot 集成通过动态端口分配和配置注入解决配置复杂性问题。
  • 构建 Spring Boot 应用时需生成 Java 存根和描述文件,以及相关的 Gradle 配置。
  • 在测试类中配置 WireMock 实例及相关设置,利用 gRPC DSL 进行 stubbing 操作。
  • 介绍了动态响应的方式,包括使用 JSON 模板和 WireMock 的内置匹配器。
  • 提到 WireMock gRPC 扩展的当前限制及欢迎贡献。
阅读 26
0 条评论