此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 spring-cloud-contract 4.3.0spring-doc.cadn.net.cn

在运行时生成存根

作为消费者,您可能不想等待生产者完成其实现,然后发布其存根。这个问题的解决方案可以在运行时生成存根。spring-doc.cadn.net.cn

作为生产者,在定义合同时,您需要使生成的测试通过,以便发布存根。在某些情况下,您希望取消阻止消费者,以便他们可以在测试实际通过之前获取存根。在这种情况下,您应该将此类合同设置为进行中。您可以在“正在进行的合同”部分阅读有关此内容的更多信息。这样,不会生成测试,但会生成存根。spring-doc.cadn.net.cn

作为使用者,您可以切换开关以在运行时生成存根。存根运行器忽略所有现有的存根映射,并为所有协定定义生成新的存根映射。另一种选择是将stubrunner.generate-stubs系统属性。以下示例显示了这样的设置:spring-doc.cadn.net.cn

注解
@AutoConfigureStubRunner(
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
		repositoryRoot = "stubs://file://location/to/the/contracts",
		ids = "com.example:some-producer",
		generateStubs = true)
JUnit 4 规则
@Rule
	public StubRunnerRule rule = new StubRunnerRule()
			.downloadStub("com.example:some-producer")
			.repoRoot("stubs://file://location/to/the/contracts")
			.stubsMode(StubRunnerProperties.StubsMode.REMOTE)
			.withGenerateStubs(true);
JUnit 5 扩展
@RegisterExtension
	public StubRunnerExtension stubRunnerExtension = new StubRunnerExtension()
			.downloadStub("com.example:some-producer")
			.repoRoot("stubs://file://location/to/the/contracts")
			.stubsMode(StubRunnerProperties.StubsMode.REMOTE)
			.withGenerateStubs(true);