Der Pseudo-ApplicationEventPublisher kann nicht in @MicronautTest eingefügt werdenJava

Java-Forum
Anonymous
 Der Pseudo-ApplicationEventPublisher kann nicht in @MicronautTest eingefügt werden

Post by Anonymous »

Ich verwende ApplicationEventPublisher aktiv in meiner App und das Hauptergebnis einiger Methodenausführungen ist das Veröffentlichen von Ereignissen mit ApplicationEventPublisher.
Ich verwende eine einfache Falle für Ereignisse in der Testumgebung, um Ereignisse zu sammeln und zu überprüfen:

Code: Select all

@Singleton
public class MessageListenerTestHelper {
private ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue();

@Async
@EventListener
public void onEvent(Object event) {
queue.add(event);
}

public Queue getQueue() {
return queue;
}

public  Future getEventFromQueue(Class eventClass) {
CompletableFuture future = new CompletableFuture();
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
Optional eventOpt = queue.stream()
.filter(eventClass::isInstance)
.findAny();
if (eventOpt.isPresent()) {
future.complete((T) eventOpt.get());
}
}, 100, 100, TimeUnit.MILLISECONDS);
return future;
}
}

Aber meine Tests sind unzuverlässig – normalerweise schlägt es bei Github-Aktionen fehl, funktioniert aber auf meinem Computer. Daher möchte ich das Problem durch einen Mock-ApplicationEventPublisher beheben. Aber die Annotation @Replaces funktioniert nicht. Ich habe es im Test ausprobiert und war ab Werk nur in der Testumgebung verfügbar, aber nichts davon hat funktioniert.
Ich werde die Verwendung der @MicronautTest-Annotation ablehnen und Mocks manuell einfügen. Aber vielleicht gibt es noch eine andere Wahl?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post