51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2372|回复: 0
打印 上一主题 下一主题

[转贴] 契约测试之Spring Cloud Contract

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-11 15:01:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在微服务架构下,服务间会通过某种形式的消息传递或API调用进行耦合,这让服务的集成以及测试变成了非常具有挑战的一件事。早在微服务流行之前,就有人提出了消费者驱动契约(Consumer-driven contracts,简称CDC)的概念。今天我们要说的Spring Cloud Contract就是基于消费者驱动契约的测试工具。

CDC 开发服务过程:

通过团队人员的讨论,根据服务接口实际使用的场景以及期望返回的数据,商定契约内容。在确定了契约之后,使用Spring Cloud Contract 为服务方生成自动测试,在服务方接口开发完成后,要确保能够通过该测试的验证。消费方也是可以基于契约来开发功能的。Spring Cloud Contract会基于契约来生成存根服务,消费方不需要等待接口开发完成,就可以通过存根服务完成集成测试。


Spring Cloud Contract 的使用:

服务方:
1.pom中添加spring-cloud-starter-contract-verifier依赖项与插件。



使用标签指定基类所在的package。


2.创建契约。

在src/test/resoures/contracts下创建契约。Spring Could Contract中,契约是用一种基于 Groovy 的 DSL 定义的。指定 API 的请求和响应的规则。


3.创建一个测试用的基类,准备符合契约的代码。




4.运行 /mvn clean install –Dmaven.test.skip=true
Target目录下会生成存根文件(stub.jar)及测试用例,并将存根文件打包到本地maven仓库。



服务方接口开发完通过该测试用例验证接口的正确性。



消费方:
1.pom中引入spring-cloud-starter-contract-stub-runner依赖。



2.编写测试用例。

通过@AutoConfigureStubRunner自动注入StubRunner,模拟服务方。
参数ids定位到maven中的stub.jar。
Ids = groupId : artifactId : version(’+’表示最新版本): 存根 : StubRunner端口
如果你将stub.jar发布到Maven私服中,可以通过repositoryRoot参数指定私服地址来远程调用。在测试通过后会根据契约返回响应内容。


总结:

文中首先介绍了契约测试的背景以及基于CDC开发服务的大致过程。然后编写契约文件通过Spring Cloud Contract的contract verifier插件生成存根和服务方的测试用例,消费方编写测试用例,通过StrubRunner模拟服务方来完成一次消费方调用服务方的测试。当所有团队成员都了解了工作流程,Spring Cloud Contract将会让微服务之间的集成更加顺畅。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-9 09:49 , Processed in 0.075176 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表