Skip to content

Commit a5f8e1a

Browse files
Make tests compatible with JUnit 5.13 and earlier versions
InstrumentationVerificationTests depends on an internal class (its name) of JUnit which was changed in 5.13 from ParameterizedTestParameterResolver to ParameterizedTestMethodParameterResolver. The test should work no matter if JUnit 5.13, an older, or an earlier version is on the classpath. Closes gh-6344
1 parent bae29ec commit a5f8e1a

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

micrometer-test/src/main/java/io/micrometer/core/instrument/InstrumentationVerificationTests.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,23 +84,22 @@ enum TestType {
8484
// https://code-case.hashnode.dev/how-to-pass-parameterized-test-parameters-to-beforeeachaftereach-method-in-junit5
8585
static class AfterBeforeParameterResolver implements BeforeEachMethodAdapter, ParameterResolver {
8686

87+
private static final Set<String> PARAMETER_RESOLVERS = new HashSet<>(Arrays.asList(
88+
// JUnit 5.13 and after
89+
"org.junit.jupiter.params.ParameterizedTestMethodParameterResolver",
90+
// JUnit 5.12 and before
91+
"org.junit.jupiter.params.ParameterizedTestParameterResolver"));
92+
8793
private ParameterResolver parameterisedTestParameterResolver = null;
8894

8995
@Override
9096
public void invokeBeforeEachMethod(ExtensionContext context, ExtensionRegistry registry) {
91-
Optional<ParameterResolver> resolverOptional = registry.getExtensions(ParameterResolver.class)
97+
parameterisedTestParameterResolver = registry.getExtensions(ParameterResolver.class)
9298
.stream()
93-
.filter(parameterResolver -> parameterResolver.getClass()
94-
.getName()
95-
.contains("ParameterizedTestParameterResolver"))
96-
.findFirst();
97-
if (!resolverOptional.isPresent()) {
98-
throw new IllegalStateException(
99-
"ParameterizedTestParameterResolver missed in the registry. Probably it's not a Parameterized Test");
100-
}
101-
else {
102-
parameterisedTestParameterResolver = resolverOptional.get();
103-
}
99+
.filter(this::isParameterizedTestMethodParameterResolver)
100+
.findFirst()
101+
.orElseThrow(() -> new IllegalStateException(
102+
"Parameterized test resolver was not found in JUnit's ExtensionRegistry. Probably it's not a Parameterized Test."));
104103
}
105104

106105
@Override
@@ -120,6 +119,10 @@ public Object resolveParameter(ParameterContext parameterContext, ExtensionConte
120119
.resolveParameter(getMappedContext(parameterContext, extensionContext), extensionContext);
121120
}
122121

122+
private boolean isParameterizedTestMethodParameterResolver(ParameterResolver parameterResolver) {
123+
return PARAMETER_RESOLVERS.contains(parameterResolver.getClass().getName());
124+
}
125+
123126
private MappedParameterContext getMappedContext(ParameterContext parameterContext,
124127
ExtensionContext extensionContext) {
125128
return new MappedParameterContext(parameterContext.getIndex(),

0 commit comments

Comments
 (0)