diff --git a/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java b/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java index ad4965f8d6b2e7..bc6beaaf088431 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java @@ -779,6 +779,7 @@ private DiscoveryResult discoverTestClasses() { // TODO this seems logical, but DOES NOT makes integration-test/test-extension/tests fail ClassLoader parent = ClassLoader.getSystemClassLoader(); System.out.println("HOLLY using parent for facade loader " + parent); + FacadeClassLoader.clearSingleton(); FacadeClassLoader facadeClassLoader = FacadeClassLoader.instance(parent); // TODO ideally it would be in a different module, but that is hard CollaboratingClassLoader.construct(parent); facadeClassLoader.setAuxiliaryApplication(true); diff --git a/core/deployment/src/main/java/io/quarkus/test/junit/classloading/FacadeClassLoader.java b/core/deployment/src/main/java/io/quarkus/test/junit/classloading/FacadeClassLoader.java index 1d5bf1d7e786e3..120a10ba9e5a10 100644 --- a/core/deployment/src/main/java/io/quarkus/test/junit/classloading/FacadeClassLoader.java +++ b/core/deployment/src/main/java/io/quarkus/test/junit/classloading/FacadeClassLoader.java @@ -95,6 +95,10 @@ public class FacadeClassLoader extends ClassLoader implements Closeable { private static volatile FacadeClassLoader instance; + public static void clearSingleton() { + instance = null; + } + // TODO does it make sense to have a parent here when it is sometimes ignored? // We don't ever want more than one FacadeClassLoader active, especially since config gets initialised on it. // The gradle test execution can make more than one, perhaps because of its threading model.