Fix @ExtendWith search in TestClassScanner

The search algorithm for @ExtendWith should not be tied to Spring's
@NestedTestConfiguration semantics. Rather, general JUnit annotation
search semantics should be used to find @ExtendWith.

See gh-28824
This commit is contained in:
Sam Brannen
2022-07-15 16:46:39 +02:00
parent 1f3ea5133f
commit 3fd72652be

View File

@@ -37,8 +37,8 @@ import org.springframework.core.annotation.MergedAnnotation;
import org.springframework.core.annotation.MergedAnnotations;
import org.springframework.test.context.BootstrapWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestContextAnnotationUtils;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClasspathRoots;
import static org.junit.platform.engine.discovery.PackageNameFilter.includePackageNames;
@@ -170,7 +170,7 @@ class TestClassScanner {
private static boolean isJupiterSpringTestClass(Class<?> clazz) {
return MergedAnnotations.search(TYPE_HIERARCHY)
.withEnclosingClasses(TestContextAnnotationUtils::searchEnclosingClass)
.withEnclosingClasses(ClassUtils::isInnerClass)
.from(clazz)
.stream(EXTEND_WITH_ANNOTATION_NAME)
.map(annotation -> annotation.getClassArray(VALUE))