spring cloud contract http实例

ops/2024/12/15 17:30:50/
http://www.w3.org/2000/svg" style="display: none;">

微服务很多时,服务之前相互调用,接口参数的一致性要变得很难维护。
spring cloud>spring cloud contract 提供了测试接口一致性的方法。

一 项目配置

plugins {id "groovy"id "org.springframework.cloud.contract" version "4.0.5"id "maven-publish"
}String contractVersion = "1.0.0-contract-SNAPSHOT"ext {set('springCloudVersion', "2022.0.5")set('groovyVersion', "4.0.20")set('contractVersion', "4.0.5")set('streamVersion', "4.0.5")
}contracts {testMode = 'MockMvc'deleteStubsAfterTest = truebaseClassForTests = "com.leve.${artifactId}.ContractTestBase"generatedTestJavaSourcesDir = project.file("src/contractTest/contract")
}dependencies {testImplementation("org.apache.groovy:groovy-all:${groovyVersion}")testImplementation("org.springframework.cloud:spring-cloud-starter-contract-verifier")testImplementation("org.springframework.cloud:spring-cloud-starter-contract-stub-runner")
}dependencyManagement {imports {mavenBom("org.springframework.cloud:spring-cloud-dependencies:${property("springCloudVersion")}")mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:${property("contractVersion")}"mavenBom ("org.springframework.cloud:spring-cloud-stream-dependencies:${property("streamVersion")}")}
}publishing {publications {maven(MavenPublication) {artifact(tasks.named('verifierStubsJar'))}// 如果项目名称带有横杠的,比如说auth-ghost,那么需要像下面这样去掉横杠,不然openfign404// maven.artifactId = "authghost"}repositories {maven {url = uri("https://nexus.111.com/repository/leve-maven/")version = contractVersioncredentials {username = nexusUsernamepassword = nexusPassword}allowInsecureProtocol = false}}
}

二 基类

公共基类, 需要注意基类所在的路径,可以修改配置指定基类的名称和路径。

 
/*** ContractTestBase*/
@SpringBootTest(properties = {"spring.cloud.function.definition=",
})
@AutoConfigureStubRunner
public class ContractTestBase{@Autowiredprivate WebApplicationContext applicationContext;@MockBeanprivate UserInfoService userInfoService;@BeforeEachpublic void setUp() {RestAssuredMockMvc.webAppContextSetup(applicationContext);}}

三 消费端配置

ids看你需要哪些服务,自行增改。版本号可以不要,会拉取最新的。

stubrunner:ids:- "com.test:user"- "com.test:ghost"repositoryRoot: https://nexus.test.com/repository/leve-maven/stubsMode: REMOTE

在测试类上面使用 @AutoConfigureStubRunner

四 运行测试

User服务调用 ghost服务的 接口

4.1 生产端

https://i-blog.csdnimg.cn/direct/c00a2377521b4aefa85ac2fe2381d062.png" alt="在这里插入图片描述" />
在ghost服务按照上面的配置,写好contract.yml文件,构建测试通过后,然后publish到nexus上面

https://i-blog.csdnimg.cn/direct/bf5a94ac3f3a49288877fcfcee646b1f.png" alt="在这里插入图片描述" />
https://i-blog.csdnimg.cn/direct/43b32c0f88114bd6b9e2ef5656a2b4d8.png" alt="在这里插入图片描述" />

4.2 消费端

bootstrap.yml文件添加对应的生产端服务id
https://i-blog.csdnimg.cn/direct/a805d54a428c4b4ba14a927e151b1b28.png" alt="在这里插入图片描述" />
然后再对应的测试类上面添加 @AutoConfigureStubRunner

https://i-blog.csdnimg.cn/direct/8768a4cb27464d2d8a66851934d2f520.png" alt="在这里插入图片描述" />
测试方法

https://i-blog.csdnimg.cn/direct/36e0d21421654d338be26dd5b1b5b2cb.png" alt="在这里插入图片描述" />
方法中通过openfeign调用ghost服务

测试结果

https://i-blog.csdnimg.cn/direct/bf36dae547b24ee4a908c4901e53d220.png" alt="在这里插入图片描述" />


http://www.ppmy.cn/ops/142166.html

相关文章

FFmpeg功能使用

步骤:1,安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev;如下图 会跳到另外的下载界面: 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip: 即可下载到FFmpeg; 使用&#…

使用html 和javascript 实现微信界面功能1

1.功能说明: 搜索模块: 提供一个搜索框,但目前没有实现具体的搜索功能。 好友模块: 在左侧的“好友”部分有一个“查看好友”按钮。点击左侧的“查看好友”按钮时,会在右侧显示所有好友的列表。列表中每个好友可以点击查看详情,包…

网络安全教学博客(二):常见网络安全威胁剖析

在上一篇博客中,我们了解了网络安全的基础概念和重要性。今天,让我们深入探讨一下常见的网络安全威胁,以便我们能够更好地识别和防范它们。 恶意软件(Malware) 病毒(Virus):病毒是一…

vue +element 导入导出 文件太大,导致超时问题

今天遇到一个问题就是数据量过大时候一次性导入导出会出现一直加载问题,原本我修改了针对这两个接口不限制请求超时时间,发现没有用 // 导入 export function importSaleorder(data) {return request({url: xnkj/order/saleorder/importSaleorder,heade…

负载均衡,高可用,监控服务搭建总结

LVS-NAT1.装ipvsadm包2.配置内核参数开启路由转发功能:/etc/sysctl.conf3.搭建lvs-nat负载均衡服务(添加虚拟服务器和真实服务器)LVS-DR1.装ipvsadm和network-scripts包2.调整内核参数设置arp_ignore和arp_annunce3.配置虚拟网卡,实现共享ip:/etc/sysconfig/network-scripts/4.…

httpsok-v1.18.0-SSL证书自动续期

🔥httpsok-v1.18.0-SSL证书自动续期 介绍 httpsok 是一个便捷的 HTTPS 证书自动续期工具,基于全新的设计理念,专为 Nginx 、OpenResty、Apache 等服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分…

嵌入式驱动开发详解16(音频驱动开发)

文章目录 前言WM8960简介I2S协议接口说明 SAI音频接口简介驱动框架简介设备树配置内核使能声卡设置与测试 后续参考文献 前言 该专栏主要是讲解嵌入式相关的驱动开发,但是由于ALSA驱动框架过于复杂,实现音频编解码芯片的驱动不是一个人能完成的&#xf…

Python和Java,自动化测试该选谁?

一、引言 自动化测试的重要性简述 在当下软件开发领域,自动化测试已然成为了不可或缺的关键环节,对提升效率以及保障质量起着至关重要的作用。 随着科技的飞速发展,软件系统日益复杂,功能愈发多样,传统的手动测试方法…