From 6168d22d02417a7ab812229f9a8aa710ed138544 Mon Sep 17 00:00:00 2001 From: Steve Todorov Date: Fri, 12 May 2023 21:18:41 +0300 Subject: [PATCH] #690: Cover some corner-case bugs which happen when generating object keys for ParameterizedTests. --- .../carlspring/cloud/storage/s3fs/BaseTest.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/carlspring/cloud/storage/s3fs/BaseTest.java b/src/test/java/org/carlspring/cloud/storage/s3fs/BaseTest.java index c62db152..74085ec6 100644 --- a/src/test/java/org/carlspring/cloud/storage/s3fs/BaseTest.java +++ b/src/test/java/org/carlspring/cloud/storage/s3fs/BaseTest.java @@ -9,6 +9,8 @@ import ch.qos.logback.classic.pattern.TargetLengthBasedClassNameAbbreviator; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; + import static java.util.UUID.randomUUID; /** @@ -63,9 +65,17 @@ protected String getTestBasePath() if (!isAbstract) { - Method method = clazz.getDeclaredMethod(methodName); - Test hasTestAnnotation = method.getDeclaredAnnotation(Test.class); - if (hasTestAnnotation != null) + Method method = Arrays.stream(clazz.getDeclaredMethods()) + .filter(m -> m.getName().equals(methodName)) + .findFirst() + .orElse(null); + if(method == null) { + throw new NoSuchMethodException(className+"#"+methodName); + } + boolean hasTestAnnotation = Arrays.stream(method.getDeclaredAnnotations()) + .anyMatch(a -> a.annotationType() == Test.class || + a.annotationType() == ParameterizedTest.class); + if (hasTestAnnotation) { // Additional prefix after the class name for better differentiation. String prNumber = System.getenv(PR_NUMBER_ENV_VAR);