Spring Cloud Contract4.1.4

Spring Cloud Contract 是一个伞形项目,它包含帮助用户成功实现消费者驱动契约方法的解决方案。目前 Spring Cloud Contract 包含 Spring Cloud Contract Verifier 项目。

Spring Cloud Contract Verifier 是一款支持基于 JVM 的应用程序进行消费者驱动契约 (CDC) 开发的工具。它附带了用 Groovy 或 YAML 编写的契约定义语言 (DSL)。契约定义用于生成以下资源:

  • 默认情况下,在对客户端代码进行集成测试时,JSON 存根定义将由 WireMock(HTTP 服务器存根)使用。(客户端测试)仍然需要手动编写测试代码,测试数据由 Spring Cloud Contract Verifier 生成。

  • 如果您正在使用消息路由。我们正在与 Spring Integration、Spring Cloud Stream 和 Apache Camel 集成。但是,如果需要,您可以设置自己的集成。

  • 验收测试(默认情况下在 JUnit 或 Spock 中)用于验证 API 的服务器端实现是否符合契约(服务器测试)。完整的测试由 Spring Cloud Contract Verifier 生成。

Spring Cloud Contract Verifier 将 TDD 推动到软件架构层面。

要了解 Spring Cloud Contract 如何支持其他语言,请查看这篇博文

特性

当尝试测试与其他服务通信的应用程序时,我们可以执行以下两种操作之一:

  • 部署所有微服务并执行端到端测试

  • 在单元/集成测试中模拟其他微服务

两者都有其优点,但也存在许多缺点。让我们关注后者。部署所有微服务并执行端到端测试

优点

  • 模拟生产环境

  • 测试服务之间的实际通信

缺点

  • 要测试一个微服务,我们需要部署 6 个微服务、几个数据库等。

  • 进行测试的环境将被锁定用于单个测试套件(即,在此期间没有人能够运行测试)。

  • 运行时间长

  • 反馈非常滞后

  • 极其难以调试

在单元/集成测试中模拟其他微服务

优点

  • 反馈速度很快

  • 无需基础设施要求

缺点

  • 服务实现者创建存根,因此它们可能与现实无关

  • 您可以使用通过测试但生产失败的测试上线。

为了解决上述问题,创建了带有 Stub Runner 的 Spring Cloud Contract Verifier。它们的主要思想是让您获得非常快速的反馈,而无需设置整个微服务世界。

Spring Cloud Contract Verifier 特性

  • 确保 HTTP/消息存根(在开发客户端时使用)与实际服务器端实现完全一致

  • 推广验收测试驱动开发方法和微服务架构风格

  • 提供一种发布契约更改的方法,这些更改可在通信的两端立即可见

  • 生成在服务器端使用的样板测试代码

Spring Initializr

快速入门您的项目

捷足先登

VMware 提供培训和认证,以加快您的进度。

了解更多

获得支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部