|
12 | 12 | package io.vertx.junit5; |
13 | 13 |
|
14 | 14 | import io.vertx.core.Vertx; |
| 15 | +import org.junit.jupiter.api.AfterEach; |
15 | 16 | import org.junit.jupiter.api.Nested; |
16 | | -import org.junit.jupiter.api.extension.*; |
| 17 | +import org.junit.jupiter.api.extension.DynamicTestInvocationContext; |
| 18 | +import org.junit.jupiter.api.extension.ExtensionContext; |
17 | 19 | import org.junit.jupiter.api.extension.ExtensionContext.Namespace; |
18 | 20 | import org.junit.jupiter.api.extension.ExtensionContext.Store; |
| 21 | +import org.junit.jupiter.api.extension.InvocationInterceptor; |
| 22 | +import org.junit.jupiter.api.extension.ParameterContext; |
| 23 | +import org.junit.jupiter.api.extension.ParameterResolutionException; |
| 24 | +import org.junit.jupiter.api.extension.ParameterResolver; |
| 25 | +import org.junit.jupiter.api.extension.ReflectiveInvocationContext; |
19 | 26 |
|
20 | 27 | import java.lang.reflect.Method; |
21 | 28 | import java.util.ArrayList; |
@@ -164,12 +171,23 @@ public void interceptDynamicTest(Invocation<Void> invocation, DynamicTestInvocat |
164 | 171 | @Override |
165 | 172 | public void interceptAfterEachMethod(Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Throwable { |
166 | 173 | invocation.proceed(); |
167 | | - joinActiveTestContexts(extensionContext); |
| 174 | + joinActiveTestContexts(invocationContext, extensionContext); |
168 | 175 | } |
169 | 176 |
|
170 | 177 | private void joinActiveTestContexts(ExtensionContext extensionContext) throws Exception { |
| 178 | + joinActiveTestContexts(null, extensionContext); |
| 179 | + } |
| 180 | + |
| 181 | + private void joinActiveTestContexts(ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Exception { |
171 | 182 | if (extensionContext.getExecutionException().isPresent()) { |
172 | | - return; |
| 183 | + final boolean isNotInAfterEachMethod = Optional.ofNullable(invocationContext) |
| 184 | + .map(ReflectiveInvocationContext::getExecutable) |
| 185 | + .map(executable -> executable.getAnnotation(AfterEach.class)) |
| 186 | + .isEmpty(); |
| 187 | + |
| 188 | + if (isNotInAfterEachMethod) { |
| 189 | + return; |
| 190 | + } |
173 | 191 | } |
174 | 192 |
|
175 | 193 | ContextList currentContexts = store(extensionContext).remove(TEST_CONTEXT_KEY, ContextList.class); |
|
0 commit comments