【发布时间】:2017-01-30 01:07:39
【问题描述】:
更新
下面列出的我的课程 (ServiceDiscoveryConfiguration) 从未被使用过。即使我删除 @EnableDiscoveryClient 以尝试完全避免设置,它仍会尝试连接到 Consul。
唯一对我有用的是完全删除 Consul Maven 依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-all</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
如果不通过配置文件和注释设置,我该怎么做才能阻止 Consul 运行单元测试?
原创
我有一个使用 Spring Consul 的应用程序。 我设置了一个类来启用这样的发现:
@Profile ("!" + Profiles.UNIT_TEST)
@Configuration
@EnableDiscoveryClient
public class ServiceDiscoveryConfiguration {
}
如果我没记错的话,这应该禁用 Consul 部分。基本测试类(它是我所有单元测试之间共享的abstract)使用以下注释进行设置。这就是我认为问题所在。
@SpringBootTest (classes = Service.class)
@WebAppConfiguration
@TestExecutionListeners (...)
@DirtiesContext
@ActiveProfiles (Profiles.UNIT_TEST)
@Test (...)
public abstract class AbstractBootTest extends AbstractTestNGSpringContextTests {
// ...
}
当我执行测试时,我得到:
引起:com.ecwid.consul.transport.TransportException: java.net.ConnectException:连接被拒绝
这让我相信配置文件激活不起作用,或者我在 @Profile 规范上使用 ! 运算符的语法没有按照我认为的那样做。根执行类本身具有基本注释,包括我知道的 @ComponentScan 注释,其中包含正在扫描的相应包。
协助?
【问题讨论】:
标签: spring spring-boot consul service-discovery