捷足先登
VMware 提供培训和认证,以加快您的进度。
了解更多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.