1、简介
Spring Cloud Contract 是一个包含解决方案的综合项目,帮助用户成功地向 Consumer Driven Contracts 进行处理。目前,Spring Cloud Contract由Spring Cloud Contract Verifier项目组成。
Spring Cloud Contract Verifier 是一个支持基于JVM的消费者驱动契约(CDC)开发应用程序的工具。它使用Groovy或YAML编写的契约定义语言(DSL)。合同定义用于生成以下资源:
- 默认情况下,WireMock(HTTPServerStub)在对客户端代码进行集成测试(客户端测试)时使用JSON 桩。测试代码仍然必须手工编写,测试数据由Spring Cloud Contract Verifier生成。
- 如果您使用的是Messaging routes,我们正在集成Spring Integration、Spring Cloud Stream和Apache Camel。但是,你如果愿意你也可以设置自己的集成。
- 验收测试(默认情况下为JUnit或Spock),用于验证API的服务器端实现是否符合约定(服务器测试)。完整测试由Spring Cloud Contract Verifier生成。
Spring Cloud Contract Verifier将TDD移动到软件体系结构的级别。
2、特征
在尝试测试与其他服务通信的应用程序时,我们可以做两件事之一:
- 部署所有微服务并执行端到端测试
- 模拟单元/集成测试中的其他微服务
(1)部署所有微服务并执行端到端测试
优势:
- 模拟生产
- 测试服务之间的真是通信
缺点:
- 为了测试一个微服务,我们需要部署6个微服务,几个数据库等等。
- 进行测试的环境将锁定为一组测试(也就是说,在此期间没有其他人能够运行测试)。
- 运行时间长
- 极迟反馈
- 极难调试
(2)模拟单元/集成测试中的其他微服务
优势:
- 极快反馈
- 不需要基础设施
缺点:
- 服务的实现者创建桩,因此它们可能与现实无关。
- 可以通过编写pass和fail的用例来进行生产。
为了解决上述问题,创建了Spring Cloud Contract Verifier和Stub Runner。他们的主要想法是给你非常快的反馈,而不需要建立整全部完整的微服务。
Spring Cloud Contract Verifier特性:
- 确保HTTP/消息传递桩(在开发客户端时使用)正在执行实际服务器端实现将完成的任务。
- 推广验收测试驱动开发的方法和Microservices 体系结构风格。
- 提供一种发布通信双方立即可见的契约更改的方法。
- 生成服务器端使用的样板测试代码。
3、Spring Boot Config
要获得非常详细的一步的指南,请查看