Как написать модульный тест для автоматической настройки весенней загрузкиJAVA

Программисты JAVA общаются здесь
Anonymous
Как написать модульный тест для автоматической настройки весенней загрузки

Сообщение Anonymous »

Справочная информация:
Я создал свою собственную стартовую автоконфигурацию Spring Boot и хочу ее протестировать. В профиле разработчика внедренный RestTemplate является общим и не улучшен балансировкой нагрузки. В тестовом профиле этот RestTemplate помечен @LoadBalanced и может использовать функции клиента обнаружения.
Код:
Вот упрощенная версия:

Код: Выделить всё

@SpringBootApplication
public class SpringBootTestLoadBalanceApplication {

@Bean(name = "restTemplate")
@Profile("dev")
public RestTemplate devRestTemplate() {
return new RestTemplate();
}

@Bean(name = "restTemplate")
@Profile("test")
@LoadBalanced
public RestTemplate testRestTemplate() {
return new RestTemplate();
}

public static void main(String[] args) {
SpringApplication.run(SpringBootTestLoadBalanceApplication.class, args);
}
}
А вот мой модульный тест после отладки работы @LoadBalanced и проверки того, улучшен ли RestTemplate за счет балансировки нагрузки:

Код: Выделить всё

class SpringBootTestLoadBalanceApplicationTest {

private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(SpringBootTestLoadBalanceApplication.class, LoadBalancerAutoConfiguration.class));

@Test
public void contextLoads() {
contextRunner.withPropertyValues("spring.profiles.active=test")
.run(context -> {
assertThat(context).hasBean("restTemplate");
RestTemplate restTemplate = (RestTemplate) context.getBean("restTemplate");
assertThat(restTemplate.getInterceptors()).anyMatch(clientHttpRequestInterceptor -> Objects.equals(clientHttpRequestInterceptor.getClass(), LoadBalancerInterceptor.class));
});
}
}
Вопрос:
Это работает хорошо, но я обнаружил кое-что странное: в моем стеке отладки RestTemplate расширен с помощью org.springframework.cloud. client.loadbalancer.LoadBalancerAutoConfiguration Однако мой модульный тест импортирует LoadBalancerAutoConfiguration — это org.springframework.cloud.loadbalancer.config.LoadBalancerAutoConfiguration, и когда я меняю имя пакета импорта, он не запускается, я не знаю, как это решить.


Подробнее здесь: https://stackoverflow.com/questions/788 ... figuration

Вернуться в «JAVA»