Closed mshabarov closed 4 months ago
CDI injection doesn't work in test environment when TestBench UI Unit Testing is used in Quarkus Test. Suppose the following configuration:
Vaadin view with CDI
@Route class ReportView extends VerticalLayout { public ReportView(GreetService greetService) { add(new Span(greetService.greet())); } }
Service
@ApplicationScoped public class GreetService { public String greet() { return "hello" } }
Quarkus test
@QuarkusTest class ReportViewTest extends UIUnitTest { @Test void test() { // GreetService isn't injected final ReportView reportView = navigate(ReportView.class); } }
The reason for this is that MockVaadin doesn't know anything about QuarkusInstantiator and doesn't take into account BeanManager.
MockVaadin
QuarkusInstantiator
BeanManager
Quarkus add-on should initialise UI Unit testing mock to allow CDI injections.
SpringUIUnitTest and UITestSpringLookupInitializer are the examples of DI framework integration, similar integration can be made for Quarkus.
SpringUIUnitTest
UITestSpringLookupInitializer
More context and references:
CDI injection doesn't work in test environment when TestBench UI Unit Testing is used in Quarkus Test. Suppose the following configuration:
Vaadin view with CDI
Service
Quarkus test
The reason for this is that
MockVaadin
doesn't know anything aboutQuarkusInstantiator
and doesn't take into accountBeanManager
.Quarkus add-on should initialise UI Unit testing mock to allow CDI injections.
SpringUIUnitTest
andUITestSpringLookupInitializer
are the examples of DI framework integration, similar integration can be made for Quarkus.More context and references: