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云架构代码结构

整合spring cloud云服务架构 - particle云架构

spring cloud云服务架构

(十六) 整合spring cloud云架构 -使用spring cloud Bus刷新配置