From fc4561770c55ff17e08f66c9450406a6b6337dd3 Mon Sep 17 00:00:00 2001 From: Radoslav Husar Date: Wed, 3 Jul 2024 19:14:34 +0200 Subject: [PATCH] ARQ-2231 The JUnit 5 container does not work with manual mode tests (#583) --- .../junit5/ArquillianExtension.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/junit5/core/src/main/java/org/jboss/arquillian/junit5/ArquillianExtension.java b/junit5/core/src/main/java/org/jboss/arquillian/junit5/ArquillianExtension.java index 21887f009..6165e4e09 100644 --- a/junit5/core/src/main/java/org/jboss/arquillian/junit5/ArquillianExtension.java +++ b/junit5/core/src/main/java/org/jboss/arquillian/junit5/ArquillianExtension.java @@ -93,23 +93,28 @@ public void interceptTestMethod(Invocation invocation, ReflectiveInvocatio } @Override - public void interceptBeforeEachMethod(Invocation invocation, - ReflectiveInvocationContext invocationContext, ExtensionContext extensionContext) throws Throwable { - if (IS_INSIDE_ARQUILLIAN.test(extensionContext) || isRunAsClient(extensionContext)) { - invocation.proceed(); - } else { - invocation.skip(); - } + public void interceptBeforeEachMethod(Invocation invocation, ReflectiveInvocationContext invocationContext, ExtensionContext extensionContext) throws Throwable { + if (IS_INSIDE_ARQUILLIAN.test(extensionContext) || isRunAsClient(extensionContext)) { + // Since the invocation is going to proceed, the invocation must happen within the context of SPI before() + getManager(extensionContext).getAdaptor().before( + extensionContext.getRequiredTestInstance(), + extensionContext.getRequiredTestMethod(), + invocation::proceed); + } else { + invocation.skip(); + } } @Override - public void interceptAfterEachMethod(Invocation invocation, - ReflectiveInvocationContext invocationContext, ExtensionContext extensionContext) throws Throwable { - if (IS_INSIDE_ARQUILLIAN.test(extensionContext) || isRunAsClient(extensionContext)) { - invocation.proceed(); - } else { - invocation.skip(); - } + public void interceptAfterEachMethod(Invocation invocation, ReflectiveInvocationContext invocationContext, ExtensionContext extensionContext) throws Throwable { + if (IS_INSIDE_ARQUILLIAN.test(extensionContext) || isRunAsClient(extensionContext)) { + getManager(extensionContext).getAdaptor().after( + extensionContext.getRequiredTestInstance(), + extensionContext.getRequiredTestMethod(), + invocation::proceed); + } else { + invocation.skip(); + } } @Override