介绍春云合约

Spring Cloud Contract 将 TDD 提升到了软件架构层面。 它允许你进行基于消费者和生产者驱动的合同测试。spring-doc.cadn.net.cn

历史

在成为 Spring Cloud Contract 之前,这个项目被称为 Accurest。 该游戏由Marcin GrzejszczakJakub KubrynskiCodearte)创作。spring-doc.cadn.net.cn

0.1.0发行时间为2015年1月26日,并变得稳定1.0.0于2016年2月29日发行。spring-doc.cadn.net.cn

你为什么需要它?

假设我们有一个由多个微服务组成的系统,如下 图片显示:spring-doc.cadn.net.cn

微服务架构

测试问题

如果我们想测试前一图左上角的应用 为了判断它是否能与其他服务通信,我们可以做以下一种 有两点:spring-doc.cadn.net.cn

两者各有优点,但也有很多缺点。spring-doc.cadn.net.cn

部署所有微服务并执行端到端测试spring-doc.cadn.net.cn

在单元测试和集成测试中模拟其他微服务spring-doc.cadn.net.cn

为了解决上述问题,春云合约诞生了。主要思想是 能给你非常快速的反馈,无需设置 整个微服务的世界。如果你做的是存根,那你只需要申请 是你的应用程序直接使用的。下图展示了这种关系 申请的简章:spring-doc.cadn.net.cn

Stubbed 服务

Spring Cloud Contract让你确信所使用的存根是 由你拨打的服务创建。另外,如果你能用它们,那就意味着它们 并与制片方进行了测试。简而言之,你可以信任这些存根。spring-doc.cadn.net.cn

目的

春云合约的主要目的包括:spring-doc.cadn.net.cn

默认情况下,Spring Cloud Contract 作为 HTTP 服务器存根与 Wiremock 集成。spring-doc.cadn.net.cn

Spring Cloud 合约的目的不是开始写作业务 合同中的特征。假设我们有一个欺诈检查的商业用例。如果 用户可能有100种不同的骗子原因,我们假设你会制造两个 合同,一个代表正面情况,一个代表否定情况。合同测试包括 用于测试应用程序间的契约,而非模拟完整行为。

什么是合同?

作为服务的消费者,我们需要明确自己想要实现什么。我们必须 制定我们的期望。这就是我们写合同的原因。换句话说,契约是 对API或消息通信应如何呈现的达成共识。请考虑以下例子:spring-doc.cadn.net.cn

假设你想发送包含客户公司的ID,并且 它想向我们借的金额。你还想把它发送给/fraudcheck通过使用 这方法。以下列表显示了一份合同,用于检查客户是否应当 在Groovy和YAML中都被标记为欺诈:spring-doc.cadn.net.cn

预计合同来自可信来源。你绝不应该下载或与来自不可信地点的合同进行交互。