2016-09-21 2 views
0

Обновлено

Мой класс перечисленных ниже (ServiceDiscoveryConfiguration) никогда не будучи использованы. Даже если я удалю @EnableDiscoveryClient, чтобы попытаться полностью избежать установки, он по-прежнему пытается подключиться к Консулу.Spring Консул - отключить для модульных тестов

Единственное, что работал для меня был полностью удалить консулом Maven depdency:

<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> 

Что я могу сделать, чтобы предотвратить консулом для запуска для модульных тестов, если не по профилю и аннотаций установки?

Оригинал

У меня есть приложение, использующее Spring Consul. У меня есть класс, созданный для включения открытие так:

@Profile ("!" + Profiles.UNIT_TEST) 
@Configuration 
@EnableDiscoveryClient 
public class ServiceDiscoveryConfiguration { 
} 

Это должно быть отключая часть консулом, если я не ошибаюсь. Базовый тестовый класс (это 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 не делает то, что я думал, что он должен был делать. Сам класс выполнения root имеет основные аннотации, включая аннотацию @ComponentScan, которую, как я знаю, имеет проверенные пакеты.

Помощь?

ответ

1

можно отключить с помощью

@TestPropertySource(properties = {"spring.cloud.consul.config.enabled=false"}) 
0

Профиль аннотации правильно

@Profile ("!" + Profiles.UNIT_TEST) 

активация профиль выглядит нормально, также

@ActiveProfiles (Profiles.UNIT_TEST) 

Вы написали вы используете ComponentScan, что очень важно, потому что @Profile аннотация на бобе игнорируются , если компонент создается посредством аннотированного метода @Bean. Может быть, вы еще раз проверьте, чтобы этого не произошло?

Чтобы сузить эту проблему, вы можете попробовать:

установить контрольную точку в конструкторе ServiceDiscoveryConfiguration, чтобы увидеть, если это экземпляр или нет

удалить @EnableDiscoveryClient, чтобы увидеть, если это действительно причина ваши проблемы

+0

Я не верю, что это связано с профилем. Я обновляю свой вопрос, поскольку мне нужно удалить зависимости Maven. –

+0

Итак, после отладки, класс никогда не попадает. Это похоже на игнорирование этой конкретной опции конфигурации. –

0

проблема заключается в том, что если у вас есть весна-консул в пути к классам он попытается автоматически настроить его так или иначе

Смежные вопросы