Я пытаюсь протестировать приложение 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?