运行测试时禁用 Spring cloud consul

Posted

技术标签:

【中文标题】运行测试时禁用 Spring cloud consul【英文标题】:Disabling Spring cloud consul when running Test 【发布时间】:2016-06-12 09:56:41 【问题描述】:

我喜欢在没有 consul 的情况下使用测试弹簧配置文件运行我的单元测试。我正在尝试对测试配置文件使用spring.cloud.config.enabled:false 并禁用EnableDiscoveryClient 注释,但它不起作用。

我正在使用spring.cloud.consul 1.0.0.BUILD-SNAPSHOT。 这是一个例外:

com.ecwid.consul.transport.TransportException: java.net.ConnectException:连接被拒绝:连接在 com.ecwid.consul.transport.DefaultHttpTransport.executeRequest(DefaultHttpTransport.java:87) 在 com.ecwid.consul.transport.DefaultHttpTransport.makeGetRequest(DefaultHttpTransport.java:46) 在 com.ecwid.consul.v1.ConsulRawClient.makeGetRequest(ConsulRawClient.java:66)

【问题讨论】:

“不起作用”并没有真正的帮助。你得到什么错误?你用的是什么版本? 你在哪里设置了spring.cloud.config.enabled:false,你是如何禁用EnableDiscoveryClient的?完整的异常有助于查看它是来自发现还是配置。 【参考方案1】:

尝试在您的个人资料中使用 spring.cloud.consul.enabled:false 禁用 Consul。

我使用@IntegrationTest("spring.cloud.consul.enabled=false") 标签来禁用我的测试的领事,作为一个类标签。我在 Spring Cloud Consul GitHub 问题跟踪器上发现了这一点,here。

该帖子的另一个建议是使用类似以下内容作为您的bootstrap.yml

spring:
  application:
    name: <myServiceName>
  cloud:
    bus:
      enabled: false
    discovery:
      enabled: false
    consul:
      enabled: false
      config:
        enabled: false

【讨论】:

【参考方案2】:

试试@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)

【讨论】:

【参考方案3】:

添加到

@SpringBootTest(properties = "spring.cloud.consul.enabled=false", "spring.cloud.consul.discovery.enabled=false")

或 测试/资源/bootstrap.yml as

spring.cloud.consul.enabled: 假 spring.cloud.consul.discovery.enabled: 假

【讨论】:

以上是关于运行测试时禁用 Spring cloud consul的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Cloud AWS 中禁用 Cloudformation

如何在 spring boot + cloud 中禁用 refreshScope 健康指示器?

无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config

为本地开发禁用 Spring Cloud AWS 自动配置

禁用 Spring Boot/Cloud 中的功能

禁用 Spring Cloud Bus 仍然会启动 RabbitMQ