SpringCloud Stub Runner使用服务发现启动
使用Stub Runner引导程序的一种可能性是将其用作“烟雾测试”的存根的提要。这是什么意思?假设您不想将50个微服务部署到测试环境中以检查您的应用程序是否运行正常。在构建过程中,您已经执行了一组测试,但是您还想确保应用程序的包装是正确的。您可以做的是将应用程序部署到环境中,启动该应用程序并在其上运行一些测试,以查看其是否正常运行。我们可以称这些测试为冒烟测试,因为它们的想法是仅检查少数几个测试场景。
这种方法的问题在于,如果您正在执行微服务,则很可能正在使用服务发现工具。Stub Runner引导程序允许您通过启动所需的存根并将其注册到服务发现工具中来解决此问题。让我们看一下使用Eureka进行这种设置的示例。假设Eureka已经在运行。
@SpringBootApplication @EnableStubRunnerServer @EnableEurekaClient @AutoConfigureStubRunner public class StubRunnerBootEurekaExample { public static void main(String[] args) { SpringApplication.run(StubRunnerBootEurekaExample.class, args); } }
如您所见,我们想启动Stub Runner引导服务器@EnableStubRunnerServer
,启用Eureka客户端@EnableEurekaClient
,并且我们想打开桩头运行程序功能@AutoConfigureStubRunner
。
现在假设我们要启动此应用程序,以便存根自动注册。我们可以通过运行应用程序java -jar ${SYSTEM_PROPS} stub-runner-boot-eureka-example.jar
来做到这一点,其中${SYSTEM_PROPS}
将包含以下属性列表
* -Dstubrunner.repositoryRoot=https://repo.spring.io/snapshot (1) * -Dstubrunner.cloud.stubbed.discovery.enabled=false (2) * -Dstubrunner.ids=org.springframework.cloud.contract.verifier.stubs:loanIssuance,org. * springframework.cloud.contract.verifier.stubs:fraudDetectionServer,org.springframework. * cloud.contract.verifier.stubs:bootService (3) * -Dstubrunner.idsToServiceIds.fraudDetectionServer= * someNameThatShouldMapFraudDetectionServer (4) * * (1) - we tell Stub Runner where all the stubs reside (2) - we don't want the default * behaviour where the discovery service is stubbed. That's why the stub registration will * be picked (3) - we provide a list of stubs to download (4) - we provide a list of
这样,您部署的应用程序可以通过服务发现将请求发送到启动的WireMock服务器。默认情况下,极有可能在application.yml
中设置了1-3点,因为它们不太可能改变。这样,每次启动Stub Runner引导时,您只能提供要下载的存根列表。
更多建议: