运行集成测试时禁用 Spring Cloud 侦探?



使用org.springframework.cloud:spring-cloud-gcp-starter-trace:1.0.0.RELEASE并在本地运行集成测试时,我收到以下错误消息:

org.springframework.beans.factory.BeanCreationException: Error 创建在类路径中定义名称为"stackdriverSender"的 Bean 资源 [org/springframework/cloud/gcp/autoconfigure/trace/StackdriverTraceAutoConfiguration.class]: 通过工厂方法的 Bean 实例化失败;嵌套异常是 org.springframework.beans.BeanInstanceiationException: Failed to 实例化 [zipkin2.reporter.Sender]:工厂方法 "堆栈驱动程序发送器"抛出异常;嵌套异常是 java.io.IOException:应用程序默认凭据不是 可用。如果在 Google Compute Engine 中运行,它们可用。 否则,环境变量GOOGLE_APPLICATION_CREDENTIALS 必须定义指向定义凭据的文件。看 https://developers.google.com/accounts/docs/application-default-credentials 了解更多信息。

这是完全可以理解的,因为此环境变量在本地不存在,并且我不想在运行测试时使用侦探/堆栈驱动程序跟踪。我已经查看了参考文档,但我似乎只能找到有关如何为特定集成点(如 RxJava、RestTemplate 等(禁用侦探的信息。但是如何完全禁用侦探?

我尝试设置spring.sleuth.enabled=false但这似乎没有任何区别。

如何:使用 Zipkin 禁用 Webflux 侦探实现的所有测试

如果,您有以下依赖项:

implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'

然后,通过将application.yml添加到测试/资源文件夹,完全禁用集成测试的Sleuth/Zipkin:

spring:
sleuth: # All sleuth features disabled for integration tests
enabled: false
reactor:
enabled: false
web:
enabled: false
async:
enabled: false
client:
template:
enabled: false
zipkin: # All zipkin features disabled for integration tests
enabled: false

我实际上通过查看 StackdriverTraceAutoConfiguration 类的源代码找到了答案。如果使用 GCP 解决它的方法是设置spring.cloud.gcp.trace.enabled=false.这将禁用对所有集成点的跟踪。

您可以禁用跟踪、日志记录并设置假项目 ID,如下所示:

spring.cloud.gcp.project-id=fake-project-id
spring.cloud.gcp.logging.enabled=false
spring.cloud.gcp.trace.enabled=false

相关内容

  • 没有找到相关文章

最新更新