JUnit SpringBootTest постстроить и закрыть - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь протестировать приложение SpringBoot, которое само регистрируется с помощью ServiceRegistry (например, Eureka / Consul), а затем отменяет регистрацию при завершении работы.Реализация просто расширяет уже существующие весенние облачные абстракции, например

@Component
public class MyAutoRegistration extends AbstractAutoServiceRegistration<MyRegistration> {

   @override
   protected void register(){...}

   @Override
   protected void deregister(){...}

. Регистрация и отмена регистрации работают, как и ожидалось, в примерах приложений, но я не могу зафиксировать это в SpringBootTest, потому что тест выполняется ДО самостоятельного-регистрация происходит (т. е. сразу после загрузки весеннего контекста и в журналах показывается "приложение запущено за N секунд ...").Аналогичным образом тест завершается до закрытия приложения (т. Е. До весеннего закрытия контекста) и, следовательно, до начала отмены регистрации.

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyClientAutoConfiguration.class)
@EnableAutoConfiguration
public class MyRegistrationTest {

@Autowired
MyRegistration record;

@SpyBean
@Autowired
ServiceRegistry<MyRegistration> registry;

@Test
public void registers_and_deregisters(){
    verify(registry, times(1)).register(record);
    verify(registry, times(1)).deregister(record);
}

Найден тестовый класс , который выполняет нечто подобное, ноэто немного за пределами моего понимания.Есть ли простой способ включить автоматическую регистрацию / отмену регистрации в @SpringBootTest?

1 Ответ

0 голосов
/ 30 марта 2019

красная сельдь ... моя настоящая проблема была в том, что у меня не было spring-boot-starter-web на моем пути к классам, что неявно импортирует spring-boot-starter-tomcat. Без них компонент авторегистрации, который я пытался протестировать, не смог выполнить автоматическую настройку. Помещение starter-web обратно в путь к классам решило мою проблему.

...