Spring Cloud云架构 - contract简介
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud云架构 - contract简介相关的知识,希望对你有一定的参考价值。
只是为了简短说明 - Spring Cloud Contract验证程序是一种能够启用消费者驱动合同(CDC)开发基于JVM的应用程序的工具。它与合同定义语言(DSL)一起提供。合同定义用于生成以下资源:
-
在客户端代码(客户端测试)上进行集成测试时,WireMock将使用JSON存根定义。测试代码仍然需要手动编写,测试数据由Spring Cloud Contract验证器生成。
-
消息传递路由,如果你使用一个。我们正在与Spring Integration,Spring Cloud Stream,Spring AMQP和Apache Camel进行整合。然而,您可以设置自己的集成,如果你想
-
验收测试(在JUnit或Spock中)用于验证API的服务器端实现是否符合合同(服务器测试)。完全测试由Spring Cloud Contract验证器生成。
Spring Cloud Contract验证者将TDD移动到软件体系结构的层次。
为了在WireMock中使用Spring Cloud Contract验证器,您必须使用Gradle或Maven插件。
添加具有依赖关系的渐变插件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}"
classpath "org.springframework.cloud:spring-cloud-contract-gradle-plugin:${verifier_version}"
}
}
apply plugin: ‘groovy‘
apply plugin: ‘spring-cloud-contract‘
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-contract-dependencies:${verifier_version}"
}
}
dependencies {
testCompile ‘org.codehaus.groovy:groovy-all:2.4.6‘
// example with adding Spock core and Spock Spring
testCompile ‘org.spockframework:spock-core:1.0-groovy-2.4‘
testCompile ‘org.spockframework:spock-spring:1.0-groovy-2.4‘
testCompile ‘org.springframework.cloud:spring-cloud-starter-contract-verifier‘
}
Gradle的快照版本
将其他快照存储库添加到您的build.gradle以使用快照版本,每次成功构建后都会自动上传:
buildscript {
repositories {
mavenCentral()
mavenLocal()
maven { url "http://repo.spring.io/snapshot" }
maven { url "http://repo.spring.io/milestone" }
maven { url "http://repo.spring.io/release" }
}
}
添加存根
默认情况下Spring Cloud Contract验证器正在src/test/resources/contracts
目录中查找存根。
包含存根定义的目录被视为一个类名称,每个存根定义被视为单个测试。我们假设它至少包含一个用作测试类名称的目录。如果有多个级别的嵌套目录,除了最后一个级别将被用作包名称。所以具有以下结构
src/test/resources/contracts/myservice/shouldCreateUser.groovy
src/test/resources/contracts/myservice/shouldReturnUser.groovy
Spring Cloud Contract验证程序将使用两种方法创建测试类defaultBasePackage.MyService
-
shouldCreateUser()
-
shouldReturnUser()
运行插件
插件注册自己在check
任务之前被调用。只要您希望它成为构建过程的一部分,您就无所事事。如果您只想生成测试,请调用generateContractTests
任务。
默认设置
默认的Gradle插件设置创建了以下Gradle部分的构建(它是一个伪代码)
contracts { targetFramework = ‘JUNIT‘ testMode = ‘MockMvc‘ generatedTestSourcesDir = project.file("${project.buildDir}/generated-test-sources/contracts") contractsDslDir = "${project.rootDir}/src/test/resources/contracts" basePackageForTests = ‘org.springframework.cloud.verifier.tests‘ stubsOutputDir = project.file("${project.buildDir}/stubs") // the following properties are used when you want to provide where the JAR with contract lays contractDependency { stringNotation = ‘‘ } contractsPath = ‘‘ contractsWorkOffline = false } tasks.create(type: Jar, name: ‘verifierStubsJar‘, dependsOn: ‘generateClientStubs‘) { baseName = project.name classifier = contracts.stubsSuffix from contractVerifier.stubsOutputDir } project.artifacts { archives task } tasks.create(type: Copy, name: ‘copyContracts‘) { from contracts.contractsDslDir into contracts.stubsOutputDir } verifierStubsJar.dependsOn ‘copyContracts‘ publishing { publications { stubs(MavenPublication) { artifactId project.name artifact verifierStubsJar } } }
资料和源码来源
以上是关于Spring Cloud云架构 - contract简介的主要内容,如果未能解决你的问题,请参考以下文章
整合spring cloud云服务架构 - Spring Cloud简介
整合spring cloud云服务架构 - Spring Cloud简介
spring cloud - particle云架构代码结构