Skip to content

Commit 30fbcbf

Browse files
MikeEdgargsmet
authored andcommitted
Intercept dev mode test instance for HTTP resource injection
Allow JUnit5 to create the instance Signed-off-by: Michael Edgar <[email protected]>
1 parent add2d9a commit 30fbcbf

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

test-framework/junit5-internal/src/main/java/io/quarkus/test/QuarkusDevModeTest.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.IOException;
44
import java.io.InputStream;
55
import java.io.UncheckedIOException;
6+
import java.lang.reflect.Constructor;
67
import java.nio.charset.StandardCharsets;
78
import java.nio.file.Files;
89
import java.nio.file.OpenOption;
@@ -38,9 +39,8 @@
3839
import org.junit.jupiter.api.extension.BeforeAllCallback;
3940
import org.junit.jupiter.api.extension.BeforeEachCallback;
4041
import org.junit.jupiter.api.extension.ExtensionContext;
41-
import org.junit.jupiter.api.extension.TestInstanceFactory;
42-
import org.junit.jupiter.api.extension.TestInstanceFactoryContext;
43-
import org.junit.jupiter.api.extension.TestInstantiationException;
42+
import org.junit.jupiter.api.extension.InvocationInterceptor;
43+
import org.junit.jupiter.api.extension.ReflectiveInvocationContext;
4444

4545
import io.quarkus.bootstrap.BootstrapAppModelFactory;
4646
import io.quarkus.bootstrap.BootstrapException;
@@ -88,7 +88,7 @@
8888
* </ul>
8989
*/
9090
public class QuarkusDevModeTest
91-
implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, TestInstanceFactory {
91+
implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, InvocationInterceptor {
9292

9393
private static final Logger rootLogger;
9494
public static final OpenOption[] OPEN_OPTIONS = { StandardOpenOption.SYNC, StandardOpenOption.CREATE,
@@ -224,15 +224,13 @@ public QuarkusDevModeTest setBuildSystemProperty(String name, String value) {
224224
return this;
225225
}
226226

227-
public Object createTestInstance(TestInstanceFactoryContext factoryContext, ExtensionContext extensionContext)
228-
throws TestInstantiationException {
229-
try {
230-
Object actualTestInstance = factoryContext.getTestClass().getDeclaredConstructor().newInstance();
231-
TestHTTPResourceManager.inject(actualTestInstance);
232-
return actualTestInstance;
233-
} catch (Exception e) {
234-
throw new TestInstantiationException("Unable to create test proxy", e);
235-
}
227+
@Override
228+
public <T> T interceptTestClassConstructor(Invocation<T> invocation,
229+
ReflectiveInvocationContext<Constructor<T>> invocationContext,
230+
ExtensionContext extensionContext) throws Throwable {
231+
T actualTestInstance = invocation.proceed();
232+
TestHTTPResourceManager.inject(actualTestInstance);
233+
return actualTestInstance;
236234
}
237235

238236
@Override

0 commit comments

Comments
 (0)