Интеграционное тестирование реактивного обмена сообщениями Smallrye
Dears, я пытаюсь сделать какое - то тест интеграции с Smallrye реактивным сообщений с использованием https://www.testcontainers.org/ и приварной блока и 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.builtin.InstanceImpl.get(InstanceImpl.java:113) в io.smallrye.reactive.messaging.extension.ReactiveMessagingExtension.afterDeploymentValidation(ReactiveMessagingExtension.java:65) по адресу java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в java.base / jdk.internal.reflectdAvodMetativeMetativeMessaging.NativeMetativeMetativeMetativeMessage.Reflectd.NativeMetative:62) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:566) в org.jboss..injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95) в org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:187) по адресу org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330) в org.jboss.java: в org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308) по адресу org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286) в javax.Onserver.prise (ObserverMethod.java:124) на org.jboss.weld.util.Observers.notify(Observers.java:166) на org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285) на.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273) в org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177) в org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:171) в org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(org.jboss.fire).jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35)
Любая подсказка будет полезна. Я использую следующую среду:
- JDK 11
- Пункт списка
- Реактивный обмен сообщениями Smallrye 1.0.8
- Weld-junit 2.0.1.Финал