in junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/ClassSelectorResolver.java [91:115]
public Resolution resolve(UniqueIdSelector selector, Context context) {
UniqueId uniqueId = selector.getUniqueId();
UniqueId.Segment lastSegment = uniqueId.getLastSegment();
if (ClassTestDescriptor.SEGMENT_TYPE.equals(lastSegment.getType())) {
String className = lastSegment.getValue();
return ReflectionUtils.tryToLoadClass(className).toOptional().filter(isTestClassWithTests).map(
testClass -> toResolution(
context.addToParent(parent -> Optional.of(newClassTestDescriptor(parent, testClass))))).orElse(
unresolved());
}
if (NestedClassTestDescriptor.SEGMENT_TYPE.equals(lastSegment.getType())) {
String simpleClassName = lastSegment.getValue();
return toResolution(context.addToParent(() -> selectUniqueId(uniqueId.removeLastSegment()), parent -> {
if (parent instanceof ClassBasedTestDescriptor) {
Class<?> parentTestClass = ((ClassBasedTestDescriptor) parent).getTestClass();
return ReflectionUtils.findNestedClasses(parentTestClass,
isNestedTestClass.and(
where(Class::getSimpleName, isEqual(simpleClassName)))).stream().findFirst().flatMap(
testClass -> Optional.of(newNestedClassTestDescriptor(parent, testClass)));
}
return Optional.empty();
}));
}
return unresolved();
}