Smallrye тестирование интеграции реактивных сообщений - PullRequest
0 голосов
/ 08 января 2020

Уважаемые, я пытаюсь сделать какой-то тест интеграции для реактивного обмена сообщениями Smallrye, используя testcontainers и сварочный блок и junit 5. Вот мой тестовый код:

@EnableWeld
public class MicroprofileReactiveMsgIT {
private static final KafkaContainer KAFKA = new KafkaContainer();

@Inject 
@Channel("my-channel") Emitter<String> emitter;

@Inject 
@Channel("kafka") Publisher<String> receiver;

@SuppressWarnings("unchecked")
@WeldSetup
public WeldInitiator weld = WeldInitiator.of(WeldInitiator.createWeld()
                                             .addExtensions(ReactiveMessagingExtension.class));

@BeforeAll
public static void configureTestKafka() {
    KAFKA.start();
    System.setProperty("kafka.bootstrap.servers", KAFKA.getBootstrapServers());
    System.out.println(KAFKA.getContainerId());
}

@AfterAll
public static void stopTestKafka() {
    System.clearProperty("kafka.bootstrap.servers");
    KAFKA.close();
}

@Test
public void testMessaging() {

    final StringBuilder msg = new StringBuilder();
    receiver.subscribe(new Subscriber<String>() {

        @Override
        public void onSubscribe(Subscription s) {   
        }

        @Override
        public void onNext(String t) {
            msg.append(t);
        }

        @Override
        public void onError(Throwable t) {
        }

        @Override
        public void onComplete() {
        }
    });
    emitter.send("Sending message one.");
    Awaitility.await().atMost(1, TimeUnit.SECONDS).until(() -> msg.length() > 0);
}

}

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

Причина: org.jboss.weld.exceptions.UnsatisfiedResolutionException: WELD- 001334: Неудовлетворенные зависимости для типа ChannelRegistry с квалификаторами
в org.jboss.weld.bean.builtin.InstanceImpl.checkBeanResolved (InstanceImpl. java: 241) в org.jboss.weld.bean.builtlIn ( InstanceImpl. java: 113) в io.smallrye.reactive.messaging.extension.ReactiveMessagingExtension.afterDeploymentValidation (ReactiveMessagingExtension. java: 65) в java .base / jdk.internal.reflect.NativeMethodAintoImpl ) в java .base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в java .base / jdk.internal.reflect.DelegatingMethodAccessorIm pl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .base / java .lang.reflect.Method.invoke (Method. java: 566) в org.jboss.weld.injection.StaticMethodInjectionPoint. invoke (StaticMethodInjectionPoint. java: 95) в org.jboss.weld.injection.MethodInvocationStrategy $ SpecialParamPlusBeanManagerStrategy.invoke (MethodInvocationStrategy. java: 187) в org.jboss.wet.Imp.Imp. *: 330) по адресу org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent (ExtensionObserverMethodImpl. java: 123) по адресу org.jboss.weld.event.ObserverMethodImpl.sendEvent (Observer.tj0. .weld.event.ObserverMethodImpl.notify (ObserverMethodImpl. java: 286) в javax.enterprise.inject.spi.ObserverMethod.notify (ObserverMethod. java: 124) в org.jboss.welvers.wel.ser (Наблюдатели. java: 166) в org.jboss.weld.event.ObserverNotifier.notifySyncObservers (ObserverNotifier. java: 285) в org.jboss.weld.event.ObserverNotifier.notify (ObserverNotif. 1048 *: 273) по адресу org.jboss.weld.event.ObserverNotifier.fireEvent (ObserverNotifier. java: 177) по адресу org.jboss.weld.event.ObserverNotifier.fireEvent (ObserverNotifier. java: 171 at) или jboss.weld. bootstrap .events.AbstractContainerEvent.fire (AbstractContainerEvent. java: 53) в org.jboss.weld. bootstrap .events.AbstractDeploymentContainerEvent.fire (AbstractDeploymentContainerEvent. java: 35) 1014

Любая подсказка будет полезной. Я использую следующую среду:

  • JDK 11
  • Элемент списка
  • Smallrye реактивный обмен сообщениями 1.0.8
  • Weld-junit 2.0.1 .Финал
...