vaadin / quarkus

An extension to Quarkus to support Vaadin Flow
Apache License 2.0
28 stars 3 forks source link

Vaadin Routes auto-discover in TestBench UI Unit Testing framework doesn't work within Quarkus Test #139

Closed mshabarov closed 5 months ago

mshabarov commented 7 months ago

The following test

@QuarkusTest
class ReportViewTest extends UIUnitTest {
    @Test
    void removemelater() {
        final ReportView reportView = navigate(ReportView.class);
    }
}

crashes with the following exception:

java.lang.ClassNotFoundException: mytest.vaadinpoc.ReportView
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:489)
    at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:466)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:375)
    at com.vaadin.testbench.unit.internal.Routes.autoDiscoverViews(Routes.kt:82)

Vaadin Quarkus add-on needs an override of UIUnitTest and other classes, where Class.forName is used to load route classes. It should use Quarkus class loader, see

For more context on used Quarkus and Vaadin versions, see https://github.com/vaadin/quarkus/issues/121.

mcollovati commented 5 months ago

To fix this specific issue, there's no need for a custom base test class. A QuarkusUIUnitTest class will be introduced later on, when working on the other issues mentioned in vaadin/testbench#1655