三秒游
在制作人方面
要开始使用 Spring Cloud Contract,可以添加带有 REST 或消息合约的文件
通过Groovy DSL或YAML表达到契约目录,该目录由contractsDslDir财产。默认情况下,它是$rootDir/src/测试/资源/合同.
然后你可以把 Spring Cloud Contract Verifier 的依赖和插件添加到你的构建文件中,就像 以下示例展示了:
下面的列表展示了如何添加插件,应该放在构建/插件中 文件部分:
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>${spring-cloud-contract.version}</version>
<extensions>true</extensions>
</plugin>
运行./mvnw 干净安装自动生成验证应用的测试
遵守新增合同。默认情况下,测试会在org.springframework.cloud.contract.verifier.tests..
由于合同中描述的功能尚未实现 在场时,测试失败。
要让它们通过,你必须添加正确的HTTP处理实现
请求或信息。另外,你必须添加一个基础测试类以实现自动生成
项目测试。该类由所有自动生成的测试扩展,且
应包含运行这些程序所需的所有设置信息(例如)安心莫克Mvc控制器设置或消息测试设置)。
以下示例来自pom.xml,展示了如何指定基测试类:
<build>
<plugins>
<plugin>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
<version>2.1.2.RELEASE</version>
<extensions>true</extensions>
<configuration>
<baseClassForTests>com.example.contractTest.BaseTestClass</baseClassForTests> (1)
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
| 1 | 这baseClassForTestselement 可以让你指定基础测试类。一定是个孩子
一配置元素Spring-cloud-contract-maven-plugin. |
一旦实现和测试基类就位,测试通过,且 应用程序和存根工件会在本地的 Maven 仓库中构建并安装。 你现在可以合并这些更改,并且可以发布应用程序和存根伪影 在一个在线仓库中。
在消费者方面
你可以使用春云合同存根跑者在积分测试中,以实现运行
WireMock实例或消息路由,模拟实际服务。
为此,将依赖添加于春云合同存根跑者,作为
以下示例展示了:
你可以在Maven仓库里安装生产者端的存根,有两种方式 方式:
-
通过查看生产者端仓库,添加合同并生成存根 通过执行以下命令:
$ cd local-http-server-repo $ ./mvnw clean install -DskipTests
| 测试被跳过,是因为生产方合同的实施没有 还没到位,所以自动生成的合同测试失败了。 |
-
通过从远程仓库获取已有的生产者服务存根。为此, 将存根工件ID和工件仓库URL传递为
春云合约 短管跑者以下示例展示了性质:
现在你可以用@AutoConfigureStubRunner.在注释中,
提供群体识别和文物ID值春云合同存根跑者自
帮你运行合作者的作品,如下示例所示:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
public class LoanApplicationServiceTests {
. . .
}
使用该远程 小作品模式当从在线仓库下载存根时,当地用于离线工作。 |
现在,在你的集成测试中,你可以收到 HTTP 响应的跳板版本,或者 这些消息是协作者服务预期会发出的。