Spring Consul - 禁用单元测试

el *_*00b 2 spring service-discovery spring-boot consul

更新

我下面列出的类 ( 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>
Run Code Online (Sandbox Code Playgroud)

如果不通过配置文件和注释设置,我可以做些什么来阻止 Consul 运行单元测试?

原来的

我有一个使用 Spring Consul 的应用程序。我设置了一个类来启用这样的发现:

@Profile ("!" + Profiles.UNIT_TEST)
@Configuration
@EnableDiscoveryClient
public class ServiceDiscoveryConfiguration {
}
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,这应该是禁用 Consul 部分。基本测试类(它abstract在我的所有单元测试之间共享)使用以下注释设置。这就是我认为问题所在。

@SpringBootTest (classes = Service.class)
@WebAppConfiguration
@TestExecutionListeners (...)
@DirtiesContext
@ActiveProfiles (Profiles.UNIT_TEST)
@Test (...)
public abstract class AbstractBootTest extends AbstractTestNGSpringContextTests {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

当我执行我的测试时,我得到:

引起:com.ecwid.consul.transport.TransportException:java.net.ConnectException:连接被拒绝

这让我相信配置文件激活不起作用,或者我!@Profile规范上使用运算符的语法没有做我认为应该做的事情。根执行类本身有基本的注释,包括一个@ComponentScan注释,我知道它有适当的包被扫描。

帮助?

vey*_*kin 5

您可以通过禁用

@TestPropertySource(properties = {"spring.cloud.consul.config.enabled=false"})
Run Code Online (Sandbox Code Playgroud)