diff --git a/documentation/src/main/java/example/util/StringUtils.java b/documentation/src/main/java/example/util/StringUtils.java index b0eee5e142f8..f2443b1addb4 100644 --- a/documentation/src/main/java/example/util/StringUtils.java +++ b/documentation/src/main/java/example/util/StringUtils.java @@ -26,4 +26,7 @@ public static boolean isPalindrome(@Nullable String candidate) { return true; } + private StringUtils() { + } + } diff --git a/documentation/src/tools/java/org/junit/api/tools/AbstractApiReportWriter.java b/documentation/src/tools/java/org/junit/api/tools/AbstractApiReportWriter.java index 5dcc98bd6f06..5d2526b03f49 100644 --- a/documentation/src/tools/java/org/junit/api/tools/AbstractApiReportWriter.java +++ b/documentation/src/tools/java/org/junit/api/tools/AbstractApiReportWriter.java @@ -10,7 +10,6 @@ package org.junit.api.tools; -import static java.lang.String.format; import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.toList; @@ -84,8 +83,8 @@ protected void printDeclarationSectionHeader(Set statuses, Status status } out.println(h2("@API(%s)".formatted(status))); out.println(); - out.println( - paragraph(format("Discovered %d " + code("@API(%s)") + " declarations.", declarations.size(), status))); + out.println(paragraph( + "Discovered %d %s declarations.".formatted(declarations.size(), code("@API(%s)".formatted(status))))); out.println(); } diff --git a/documentation/src/tools/java/org/junit/api/tools/ApiReportGenerator.java b/documentation/src/tools/java/org/junit/api/tools/ApiReportGenerator.java index 1cf2308ed574..5aff637da94e 100644 --- a/documentation/src/tools/java/org/junit/api/tools/ApiReportGenerator.java +++ b/documentation/src/tools/java/org/junit/api/tools/ApiReportGenerator.java @@ -176,4 +176,7 @@ private static Stream collectMethods(ScanResult scanResult) { .filter(m -> m.getAnnotationInfo(API.class) != null); } + private ApiReportGenerator() { + } + } diff --git a/gradle/config/checkstyle/checkstyleMain.xml b/gradle/config/checkstyle/checkstyleMain.xml index ed8dadaaff8d..eecf914bb4d4 100644 --- a/gradle/config/checkstyle/checkstyleMain.xml +++ b/gradle/config/checkstyle/checkstyleMain.xml @@ -27,6 +27,17 @@ + + + + + + + + + + + diff --git a/gradle/config/checkstyle/checkstyleTest.xml b/gradle/config/checkstyle/checkstyleTest.xml index b795207938ad..2e81cea24a3b 100644 --- a/gradle/config/checkstyle/checkstyleTest.xml +++ b/gradle/config/checkstyle/checkstyleTest.xml @@ -19,6 +19,13 @@ + + + + + + + diff --git a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/AssertTimeoutPreemptively.java b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/AssertTimeoutPreemptively.java index a2d277de1932..3f1009f56ec9 100644 --- a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/AssertTimeoutPreemptively.java +++ b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/AssertTimeoutPreemptively.java @@ -166,4 +166,7 @@ public Thread newThread(Runnable r) { } } + private AssertTimeoutPreemptively() { + } + } diff --git a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RandomOrdererUtils.java b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RandomOrdererUtils.java index 16ca5250e539..66189bbf0a9f 100644 --- a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RandomOrdererUtils.java +++ b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RandomOrdererUtils.java @@ -41,13 +41,15 @@ private static Optional getCustomSeed(Function> c return Long.valueOf(configurationParameter); } catch (NumberFormatException ex) { - logger.warn(ex, - () -> String.format( - "Failed to convert configuration parameter [%s] with value [%s] to a long. " - + "Using default seed [%s] as fallback.", - RANDOM_SEED_PROPERTY_NAME, configurationParameter, DEFAULT_SEED)); + logger.warn(ex, () -> """ + Failed to convert configuration parameter [%s] with value [%s] to a long. \ + Using default seed [%s] as fallback.""".formatted(RANDOM_SEED_PROPERTY_NAME, + configurationParameter, DEFAULT_SEED)); return null; } }); } + + private RandomOrdererUtils() { + } } diff --git a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/extension/support/TypeBasedParameterResolver.java b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/extension/support/TypeBasedParameterResolver.java index be80ed5c3a0a..432ba321063c 100644 --- a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/extension/support/TypeBasedParameterResolver.java +++ b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/extension/support/TypeBasedParameterResolver.java @@ -53,10 +53,9 @@ private Type getParameterType(ParameterContext parameterContext) { private Type enclosedTypeOfParameterResolver() { ParameterizedType typeBasedParameterResolverSuperclass = Preconditions.notNull( - findTypeBasedParameterResolverSuperclass(getClass()), - () -> String.format( - "Failed to discover parameter type supported by %s; " - + "potentially caused by lacking parameterized type in class declaration.", + findTypeBasedParameterResolverSuperclass(getClass()), () -> """ + Failed to discover parameter type supported by %s; \ + potentially caused by lacking parameterized type in class declaration.""".formatted( getClass().getName())); return typeBasedParameterResolverSuperclass.getActualTypeArguments()[0]; } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/EnumConfigurationParameterConverter.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/EnumConfigurationParameterConverter.java index 6225a7ddbf3b..4d358ceff2f5 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/EnumConfigurationParameterConverter.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/EnumConfigurationParameterConverter.java @@ -60,10 +60,10 @@ public E get(String key, Function> lookup, E defaultVal catch (Exception ex) { // local copy necessary for use in lambda expression String constant = constantName; - logger.warn(() -> String.format( - "Invalid %s '%s' set via the '%s' configuration parameter. " - + "Falling back to the %s default value.", - enumDisplayName, constant, key, defaultValue.name())); + logger.warn(() -> """ + Invalid %s '%s' set via the '%s' configuration parameter. \ + Falling back to the %s default value.""".formatted(enumDisplayName, constant, key, + defaultValue.name())); } } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/InstantiatingConfigurationParameterConverter.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/InstantiatingConfigurationParameterConverter.java index b11896fa039e..cb00c012d527 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/InstantiatingConfigurationParameterConverter.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/config/InstantiatingConfigurationParameterConverter.java @@ -60,10 +60,9 @@ private Supplier> newInstanceSupplier(String className, String key) } private void logFailureMessage(String className, String key, Exception cause) { - logger.warn(cause, - () -> String.format("Failed to load default %s class '%s' set via the '%s' configuration parameter." - + " Falling back to default behavior.", - this.name, className, key)); + logger.warn(cause, () -> """ + Failed to load default %s class '%s' set via the '%s' configuration parameter. \ + Falling back to default behavior.""".formatted(this.name, className, key)); } private void logSuccessMessage(String className, String key) { diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/CallbackSupport.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/CallbackSupport.java index c7c6cf0e34bf..428d51a0df5b 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/CallbackSupport.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/CallbackSupport.java @@ -56,4 +56,7 @@ protected interface CallbackInvoker { } + private CallbackSupport() { + } + } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTemplateTestDescriptor.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTemplateTestDescriptor.java index 29fb3c54652d..e796a620b8a5 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTemplateTestDescriptor.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTemplateTestDescriptor.java @@ -239,9 +239,9 @@ boolean mayReturnZeroContexts(ClassTemplateInvocationContextProvider provider, @Override protected String getZeroContextsProvidedErrorMessage(ClassTemplateInvocationContextProvider provider) { - return String.format( - "Provider [%s] did not provide any invocation contexts, but was expected to do so. " - + "You may override mayReturnZeroClassTemplateInvocationContexts() to allow this.", + return """ + Provider [%s] did not provide any invocation contexts, but was expected to do so. \ + You may override mayReturnZeroClassTemplateInvocationContexts() to allow this.""".formatted( provider.getClass().getSimpleName()); } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/DisplayNameUtils.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/DisplayNameUtils.java index beaf49db101c..2a9552015cb8 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/DisplayNameUtils.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/DisplayNameUtils.java @@ -155,4 +155,7 @@ private static Optional findDisplayNameGenerator(List { Class valueType = value.getClass(); - Preconditions.condition(!extensionType.equals(valueType), - () -> String.format( - "Failed to register extension via field [%s]. " - + "The field registers an extension of type [%s] via @RegisterExtension and @ExtendWith, " - + "but only one registration of a given extension type is permitted.", - field, valueType.getName())); + Preconditions.condition(!extensionType.equals(valueType), () -> """ + Failed to register extension via field [%s]. \ + The field registers an extension of type [%s] via @RegisterExtension and @ExtendWith, \ + but only one registration of a given extension type is permitted.""".formatted(field, + valueType.getName())); }); return (Extension) value; diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/MethodSourceSupport.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/MethodSourceSupport.java index 19b17efb83e4..39b96d9c5bfa 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/MethodSourceSupport.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/MethodSourceSupport.java @@ -64,4 +64,7 @@ static MethodSource from(URI uri) { String[] methodSpec = ReflectionUtils.parseFullyQualifiedMethodName(fullyQualifiedMethodName); return MethodSource.from(methodSpec[0], methodSpec[1], methodSpec[2]); } + + private MethodSourceSupport() { + } } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/TestTemplateTestDescriptor.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/TestTemplateTestDescriptor.java index 32cbbcc8a4a2..7fc96df457ed 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/TestTemplateTestDescriptor.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/TestTemplateTestDescriptor.java @@ -146,9 +146,9 @@ boolean mayReturnZeroContexts(TestTemplateInvocationContextProvider provider, @Override protected String getZeroContextsProvidedErrorMessage(TestTemplateInvocationContextProvider provider) { - return String.format( - "Provider [%s] did not provide any invocation contexts, but was expected to do so. " - + "You may override mayReturnZeroTestTemplateInvocationContexts() to allow this.", + return """ + Provider [%s] did not provide any invocation contexts, but was expected to do so. \ + You may override mayReturnZeroTestTemplateInvocationContexts() to allow this.""".formatted( provider.getClass().getSimpleName()); } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/DiscoverySelectorResolver.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/DiscoverySelectorResolver.java index dbe6c9a92a2b..d7385521a4bb 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/DiscoverySelectorResolver.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/DiscoverySelectorResolver.java @@ -62,4 +62,7 @@ public static void resolveSelectors(EngineDiscoveryRequest request, JupiterEngin resolver.resolve(request, engineDescriptor, issueReporter); } + private DiscoverySelectorResolver() { + } + } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/MethodSelectorResolver.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/MethodSelectorResolver.java index bc69f0a0ce15..ad70aaa7913f 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/MethodSelectorResolver.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/MethodSelectorResolver.java @@ -100,10 +100,10 @@ private Resolution resolve(Context context, List> enclosingClasses, Cla // @formatter:on if (matches.size() > 1) { Stream testDescriptors = matches.stream().map(Match::getTestDescriptor); - String message = String.format( - "Possible configuration error: method [%s] resulted in multiple TestDescriptors %s. " - + "This is typically the result of annotating a method with multiple competing annotations " - + "such as @Test, @RepeatedTest, @ParameterizedTest, @TestFactory, etc.", + String message = """ + Possible configuration error: method [%s] resulted in multiple TestDescriptors %s. \ + This is typically the result of annotating a method with multiple competing annotations \ + such as @Test, @RepeatedTest, @ParameterizedTest, @TestFactory, etc.""".formatted( method.toGenericString(), testDescriptors.map(d -> d.getClass().getName()).toList()); issueReporter.reportIssue( DiscoveryIssue.builder(Severity.WARNING, message).source(MethodSource.from(method))); diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/predicates/IsTestFactoryMethod.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/predicates/IsTestFactoryMethod.java index 7b3e27d6abc7..da3bb569f5d8 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/predicates/IsTestFactoryMethod.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/discovery/predicates/IsTestFactoryMethod.java @@ -100,10 +100,8 @@ private static boolean isCompatibleContainerType(Method method, DiscoveryIssueRe } private static DiscoveryIssue.Builder createTooGenericReturnTypeIssue(Method method) { - String message = String.format( - "The declared return type of @TestFactory method '%s' does not support static validation. It " - + EXPECTED_RETURN_TYPE_MESSAGE + ".", - method.toGenericString()); + String message = ("The declared return type of @TestFactory method '%s' does not support static validation. It " + + EXPECTED_RETURN_TYPE_MESSAGE + ".").formatted(method.toGenericString()); return DiscoveryIssue.builder(Severity.INFO, message) // .source(MethodSource.from(method)); } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/execution/ParameterResolutionUtils.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/execution/ParameterResolutionUtils.java index 6b8379a56f1f..817ce5622c5a 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/execution/ParameterResolutionUtils.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/execution/ParameterResolutionUtils.java @@ -188,16 +188,16 @@ private static void validateResolvedType(Parameter parameter, @Nullable Object v if (!isAssignableTo(value, type)) { String message; if (value == null && type.isPrimitive()) { - message = String.format( - "ParameterResolver [%s] resolved a null value for parameter [%s] " - + "in %s [%s], but a primitive of type [%s] is required.", + message = """ + ParameterResolver [%s] resolved a null value for parameter [%s] \ + in %s [%s], but a primitive of type [%s] is required.""".formatted( resolver.getClass().getName(), parameter, asLabel(executable), executable.toGenericString(), type.getName()); } else { - message = String.format( - "ParameterResolver [%s] resolved a value of type [%s] for parameter [%s] " - + "in %s [%s], but a value assignment compatible with [%s] is required.", + message = """ + ParameterResolver [%s] resolved a value of type [%s] for parameter [%s] \ + in %s [%s], but a value assignment compatible with [%s] is required.""".formatted( resolver.getClass().getName(), (value != null ? value.getClass().getName() : null), parameter, asLabel(executable), executable.toGenericString(), type.getName()); } @@ -210,4 +210,7 @@ private static String asLabel(Executable executable) { return executable instanceof Constructor ? "constructor" : "method"; } + private ParameterResolutionUtils() { + } + } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/RepeatedTestExtension.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/RepeatedTestExtension.java index 5217a5b73dac..ee11b5e004ef 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/RepeatedTestExtension.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/RepeatedTestExtension.java @@ -68,8 +68,9 @@ private int failureThreshold(RepeatedTest repeatedTest, Method method) { if (failureThreshold != Integer.MAX_VALUE) { int repetitions = repeatedTest.value(); Preconditions.condition((failureThreshold > 0) && (failureThreshold < repetitions), - () -> String.format("Configuration error: @RepeatedTest on method [%s] must declare a " - + "'failureThreshold' greater than zero and less than the total number of repetitions [%d].", + () -> """ + Configuration error: @RepeatedTest on method [%s] must declare a \ + 'failureThreshold' greater than zero and less than the total number of repetitions [%d].""".formatted( method, repetitions)); } return failureThreshold; diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TempDirectory.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TempDirectory.java index a20c136fe73a..954099cbf1da 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TempDirectory.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TempDirectory.java @@ -439,9 +439,9 @@ private boolean isLinkWithTargetOutsideTempDir(Path path) { private void warnAboutLinkWithTargetOutsideTempDir(String linkType, Path file) throws IOException { Path realPath = file.toRealPath(); - LOGGER.warn(() -> String.format( - "Deleting %s from location inside of temp dir (%s) " - + "to location outside of temp dir (%s) but not the target file/directory", + LOGGER.warn(() -> """ + Deleting %s from location inside of temp dir (%s) \ + to location outside of temp dir (%s) but not the target file/directory""".formatted( linkType, file, realPath)); } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TimeoutInvocationFactory.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TimeoutInvocationFactory.java index 290da23062d0..daa4853550ef 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TimeoutInvocationFactory.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/TimeoutInvocationFactory.java @@ -54,7 +54,7 @@ private ScheduledExecutorService getThreadExecutorForSameThreadInvocation() { } @SuppressWarnings({ "deprecation", "try" }) - private static abstract class ExecutorResource implements Store.CloseableResource, AutoCloseable { + private abstract static class ExecutorResource implements Store.CloseableResource, AutoCloseable { protected final ScheduledExecutorService executor; diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/JupiterThrowableCollectorFactory.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/JupiterThrowableCollectorFactory.java index 6c9eabb3a25e..1e702956e3e7 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/JupiterThrowableCollectorFactory.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/JupiterThrowableCollectorFactory.java @@ -34,4 +34,7 @@ public static ThrowableCollector createThrowableCollector() { return new OpenTest4JAndJUnit4AwareThrowableCollector(); } + private JupiterThrowableCollectorFactory() { + } + } diff --git a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/MethodReflectionUtils.java b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/MethodReflectionUtils.java index a72d013134f4..02c8ca228ff6 100644 --- a/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/MethodReflectionUtils.java +++ b/junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/support/MethodReflectionUtils.java @@ -44,4 +44,7 @@ public static Type getGenericReturnType(Method method) { } return ReflectionSupport.invokeMethod(method, target, arguments); } + + private MethodReflectionUtils() { + } } diff --git a/junit-jupiter-engine/src/testFixtures/java/org/junit/jupiter/engine/discovery/JupiterUniqueIdBuilder.java b/junit-jupiter-engine/src/testFixtures/java/org/junit/jupiter/engine/discovery/JupiterUniqueIdBuilder.java index d504f3605d65..2df3b17eb48e 100644 --- a/junit-jupiter-engine/src/testFixtures/java/org/junit/jupiter/engine/discovery/JupiterUniqueIdBuilder.java +++ b/junit-jupiter-engine/src/testFixtures/java/org/junit/jupiter/engine/discovery/JupiterUniqueIdBuilder.java @@ -85,4 +85,7 @@ public static UniqueId engineId() { return UniqueId.forEngine(JupiterEngineDescriptor.ENGINE_ID); } + private JupiterUniqueIdBuilder() { + } + } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ArgumentCountValidator.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ArgumentCountValidator.java index 135b4986a03c..0be381158c6a 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ArgumentCountValidator.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ArgumentCountValidator.java @@ -86,10 +86,9 @@ private ArgumentCountValidationMode getArgumentCountValidationModeConfiguration( return enumValue.get(); } else { - logger.warn(() -> String.format( - "Invalid ArgumentCountValidationMode '%s' set via the '%s' configuration parameter. " - + "Falling back to the %s default value.", - configValue, key, fallback.name())); + logger.warn(() -> """ + Invalid ArgumentCountValidationMode '%s' set via the '%s' configuration parameter. \ + Falling back to the %s default value.""".formatted(configValue, key, fallback.name())); return fallback; } } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedInvocationNameFormatter.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedInvocationNameFormatter.java index d459709fde13..beebae5a8a34 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedInvocationNameFormatter.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedInvocationNameFormatter.java @@ -57,7 +57,7 @@ static ParameterizedInvocationNameFormatter create(ExtensionContext extensionCon ParameterizedDeclarationContext declarationContext) { String name = declarationContext.getDisplayNamePattern(); - String pattern = name.equals(DEFAULT_DISPLAY_NAME) + String pattern = DEFAULT_DISPLAY_NAME.equals(name) ? extensionContext.getConfigurationParameter(DISPLAY_NAME_PATTERN_KEY) // .orElse(DEFAULT_DISPLAY_NAME_PATTERN) : name; diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestSpiInstantiator.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestSpiInstantiator.java index bed7e1b61a3b..2510ad41c9d9 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestSpiInstantiator.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ParameterizedTestSpiInstantiator.java @@ -65,11 +65,14 @@ private static Constructor findBestConstructor(Class spiInterface, } } // Otherwise... - String message = String.format( - "Failed to find constructor for %s [%s]. " - + "Please ensure that a no-argument or a single constructor exists.", + String message = """ + Failed to find constructor for %s [%s]. \ + Please ensure that a no-argument or a single constructor exists.""".formatted( spiInterface.getSimpleName(), implementationClass.getName()); throw new JUnitException(message); } + private ParameterizedTestSpiInstantiator() { + } + } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ResolverFacade.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ResolverFacade.java index 9980fe7eefbf..d19eb232c616 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ResolverFacade.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/ResolverFacade.java @@ -143,10 +143,10 @@ private static ResolverFacade create(Executable executable, Annotation annotatio Preconditions.condition( aggregatorParameters.isEmpty() || aggregatorParameters.lastKey() == declaration.getParameterIndex() - 1, - () -> String.format( - "@%s %s declares formal parameters in an invalid order: " - + "argument aggregators must be declared after any indexed arguments " - + "and before any arguments resolved by another ParameterResolver.", + () -> """ + @%s %s declares formal parameters in an invalid order: \ + argument aggregators must be declared after any indexed arguments \ + and before any arguments resolved by another ParameterResolver.""".formatted( annotation.annotationType().getSimpleName(), DefaultParameterDeclarations.describe(executable))); aggregatorParameters.put(declaration.getParameterIndex(), declaration); diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/aggregator/ArgumentsAggregator.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/aggregator/ArgumentsAggregator.java index 9dd598971388..1024d2fde94d 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/aggregator/ArgumentsAggregator.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/aggregator/ArgumentsAggregator.java @@ -87,10 +87,9 @@ Object aggregateArguments(ArgumentsAccessor accessor, ParameterContext context) @API(status = EXPERIMENTAL, since = "6.0") default @Nullable Object aggregateArguments(ArgumentsAccessor accessor, FieldContext context) throws ArgumentsAggregationException { - throw new JUnitException( - String.format("ArgumentsAggregator does not override the convert(ArgumentsAccessor, FieldContext) method. " - + "Please report this issue to the maintainers of %s.", - getClass().getName())); + throw new JUnitException(""" + ArgumentsAggregator does not override the convert(ArgumentsAccessor, FieldContext) method. \ + Please report this issue to the maintainers of %s.""".formatted(getClass().getName())); } } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/converter/ArgumentConverter.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/converter/ArgumentConverter.java index 16003b8b2c2f..a8ec1ec6c0a5 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/converter/ArgumentConverter.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/converter/ArgumentConverter.java @@ -87,9 +87,8 @@ public interface ArgumentConverter { */ @API(status = EXPERIMENTAL, since = "6.0") default @Nullable Object convert(@Nullable Object source, FieldContext context) throws ArgumentConversionException { - throw new JUnitException( - String.format("ArgumentConverter does not override the convert(Object, FieldContext) method. " - + "Please report this issue to the maintainers of %s.", - getClass().getName())); + throw new JUnitException(""" + ArgumentConverter does not override the convert(Object, FieldContext) method. \ + Please report this issue to the maintainers of %s.""".formatted(getClass().getName())); } } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/AnnotationBasedArgumentsProvider.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/AnnotationBasedArgumentsProvider.java index 307e2f4d930e..608a079c5db6 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/AnnotationBasedArgumentsProvider.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/AnnotationBasedArgumentsProvider.java @@ -72,10 +72,10 @@ public Stream provideArguments(ParameterDeclarations parame @Deprecated @API(status = DEPRECATED, since = "5.13") protected Stream provideArguments(ExtensionContext context, A annotation) { - throw new JUnitException(String.format( - "AnnotationBasedArgumentsProvider does not override the provideArguments(ParameterDeclarations, ExtensionContext, Annotation) method. " - + "Please report this issue to the maintainers of %s.", - getClass().getName())); + throw new JUnitException(""" + AnnotationBasedArgumentsProvider does not override the \ + provideArguments(ParameterDeclarations, ExtensionContext, Annotation) method. \ + Please report this issue to the maintainers of %s.""".formatted(getClass().getName())); } /** diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/ArgumentsProvider.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/ArgumentsProvider.java index c7f24ed01038..ec362ffc7f46 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/ArgumentsProvider.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/ArgumentsProvider.java @@ -79,10 +79,11 @@ default Stream provideArguments(ParameterDeclarations param return provideArguments(context); } catch (Exception e) { - throw new JUnitException(String.format( - "ArgumentsProvider does not override the provideArguments(ParameterDeclarations, ExtensionContext) method. " - + "Please report this issue to the maintainers of %s.", - getClass().getName()), e); + String message = """ + ArgumentsProvider does not override the provideArguments(ParameterDeclarations, ExtensionContext) method. \ + Please report this issue to the maintainers of %s.""".formatted( + getClass().getName()); + throw new JUnitException(message, e); } } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvArgumentsProvider.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvArgumentsProvider.java index 9f270d350387..0b591f49ef08 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvArgumentsProvider.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvArgumentsProvider.java @@ -80,8 +80,7 @@ static Arguments processCsvRecord(CsvRecord record, boolean useHeadersInDisplayN List headers = useHeadersInDisplayName ? getHeaders(record) : List.of(); Preconditions.condition(!useHeadersInDisplayName || fields.size() <= headers.size(), // - () -> String.format( // - "The number of columns (%d) exceeds the number of supplied headers (%d) in CSV record: %s", // + () -> "The number of columns (%d) exceeds the number of supplied headers (%d) in CSV record: %s".formatted( // fields.size(), headers.size(), fields)); // @Nullable diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java index 004982e7ab02..00f6c6de2ddf 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/CsvReaderFactory.java @@ -155,7 +155,7 @@ record DefaultFieldModifier(String emptyValue, Set nullValues, boolean i *

* The marker is generated with a unique ID to ensure it cannot conflict with actual CSV content. */ - static final String NULL_MARKER = String.format("", UUID.randomUUID()); + static final String NULL_MARKER = "".formatted(UUID.randomUUID()); @Override public String modify(long unusedStartingLineNumber, int unusedFieldIdx, boolean quoted, String field) { @@ -174,4 +174,7 @@ public String modify(long unusedStartingLineNumber, int unusedFieldIdx, boolean } + private CsvReaderFactory() { + } + } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/FieldArgumentsProvider.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/FieldArgumentsProvider.java index eea09175a15a..1f80df4048f3 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/FieldArgumentsProvider.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/FieldArgumentsProvider.java @@ -10,7 +10,6 @@ package org.junit.jupiter.params.provider; -import static java.lang.String.format; import static java.util.Arrays.stream; import java.lang.reflect.Field; @@ -98,10 +97,10 @@ static Field findField(Class testClass, String fieldName) { private static Field validateField(Field field, @Nullable Object testInstance) { Preconditions.condition(field.getDeclaringClass().isInstance(testInstance) || ModifierSupport.isStatic(field), - () -> format("Field '%s' must be static: local @FieldSource fields must be static " - + "unless the PER_CLASS @TestInstance lifecycle mode is used; " - + "external @FieldSource fields must always be static.", - field.toGenericString())); + () -> """ + Field '%s' must be static: local @FieldSource fields must be static \ + unless the PER_CLASS @TestInstance lifecycle mode is used; \ + external @FieldSource fields must always be static.""".formatted(field.toGenericString())); return field; } diff --git a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/MethodArgumentsProvider.java b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/MethodArgumentsProvider.java index 227fefc9aa17..fd7df78146c1 100644 --- a/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/MethodArgumentsProvider.java +++ b/junit-jupiter-params/src/main/java/org/junit/jupiter/params/provider/MethodArgumentsProvider.java @@ -10,7 +10,6 @@ package org.junit.jupiter.params.provider; -import static java.lang.String.format; import static java.util.Arrays.stream; import static org.junit.platform.commons.support.AnnotationSupport.isAnnotated; import static org.junit.platform.commons.util.CollectionUtils.isConvertibleToStream; @@ -180,10 +179,10 @@ private static boolean isTestMethod(Method candidate) { private static Method validateFactoryMethod(Method factoryMethod, @Nullable Object testInstance) { Preconditions.condition( factoryMethod.getDeclaringClass().isInstance(testInstance) || ReflectionUtils.isStatic(factoryMethod), - () -> format("Method '%s' must be static: local factory methods must be static " - + "unless the PER_CLASS @TestInstance lifecycle mode is used; " - + "external factory methods must always be static.", - factoryMethod.toGenericString())); + () -> """ + Method '%s' must be static: local factory methods must be static \ + unless the PER_CLASS @TestInstance lifecycle mode is used; \ + external factory methods must always be static.""".formatted(factoryMethod.toGenericString())); return factoryMethod; } diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/support/scanning/ClasspathFilters.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/support/scanning/ClasspathFilters.java index 0ce211f5f924..0505d7e0f3f6 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/support/scanning/ClasspathFilters.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/support/scanning/ClasspathFilters.java @@ -42,4 +42,7 @@ private static boolean isClassFile(Path file) { return file.getFileName().toString().endsWith(CLASS_FILE_SUFFIX); } + private ClasspathFilters() { + } + } diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/AnnotationUtils.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/AnnotationUtils.java index d277c250cfd4..fcf4ece0978a 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/AnnotationUtils.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/AnnotationUtils.java @@ -381,7 +381,7 @@ private static boolean isRepeatableAnnotationContainer(Class { // @formatter:off Repeatable repeatable = Arrays.stream(candidate.getMethods()) - .filter(attribute -> attribute.getName().equals("value") && attribute.getReturnType().isArray()) + .filter(attribute -> "value".equals(attribute.getName()) && attribute.getReturnType().isArray()) .findFirst() .map(attribute -> attribute.getReturnType().getComponentType().getAnnotation(Repeatable.class)) .orElse(null); diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ClasspathScannerLoader.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ClasspathScannerLoader.java index cfa60d58369b..e11d06e885da 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ClasspathScannerLoader.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ClasspathScannerLoader.java @@ -43,4 +43,7 @@ static ClasspathScanner getInstance() { return new DefaultClasspathScanner(ClassLoaderUtils::getDefaultClassLoader, ReflectionUtils::tryToLoadClass); } + private ClasspathScannerLoader() { + } + } diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinReflectionUtils.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinReflectionUtils.java index f27ba3c1907f..42e5edb1073e 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinReflectionUtils.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinReflectionUtils.java @@ -167,4 +167,7 @@ private static void requireDependency(Method method, boolean condition, String d dependencyNotation)); } + private KotlinReflectionUtils() { + } + } diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinSuspendingFunctionUtils.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinSuspendingFunctionUtils.java index f2b186aa575f..4e13f95e8b39 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinSuspendingFunctionUtils.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/KotlinSuspendingFunctionUtils.java @@ -110,4 +110,7 @@ private static KFunction getKotlinFunction(Method method) { return Preconditions.notNull(ReflectJvmMapping.getKotlinFunction(method), () -> "Failed to get Kotlin function for method: " + method); } + + private KotlinSuspendingFunctionUtils() { + } } diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ModuleUtils.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ModuleUtils.java index 40208636bd4c..c65e8e8dda3b 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ModuleUtils.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ModuleUtils.java @@ -223,7 +223,7 @@ List> scan(ModuleReference reference) { // @formatter:off return names.filter(name -> name.endsWith(".class")) .map(this::className) - .filter(name -> !name.equals("module-info")) + .filter(name -> !"module-info".equals(name)) .filter(classFilter::match) .> map(this::loadClassUnchecked) .filter(classFilter::match) @@ -307,4 +307,7 @@ private Resource loadResourceUnchecked(String binaryName) { } + private ModuleUtils() { + } + } diff --git a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java index ecb187cdb48a..858417dd4083 100644 --- a/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java +++ b/junit-platform-commons/src/main/java/org/junit/platform/commons/util/ReflectionUtils.java @@ -10,7 +10,6 @@ package org.junit.platform.commons.util; -import static java.lang.String.format; import static java.util.Collections.synchronizedMap; import static java.util.stream.Collectors.toCollection; import static java.util.stream.Collectors.toSet; @@ -645,7 +644,7 @@ public static Try tryToReadFieldValue(Class clazz, String fieldNa public static Try<@Nullable Object> tryToReadFieldValue(Field field, @Nullable Object instance) { Preconditions.notNull(field, "Field must not be null"); Preconditions.condition((instance != null || isStatic(field)), - () -> String.format("Cannot read non-static field [%s] on a null instance.", field)); + () -> "Cannot read non-static field [%s] on a null instance.".formatted(field)); return Try.<@Nullable Object> call(() -> makeAccessible(field).get(instance)); } @@ -697,7 +696,7 @@ public static List readFieldValues(List fields, @Nullable Object insta public static @Nullable Object invokeMethod(Method method, @Nullable Object target, @Nullable Object... args) { Preconditions.notNull(method, "Method must not be null"); Preconditions.condition((target != null || isStatic(method)), - () -> String.format("Cannot invoke non-static method [%s] on a null target.", method.toGenericString())); + () -> "Cannot invoke non-static method [%s] on a null target.".formatted(method.toGenericString())); try { return makeAccessible(method).invoke(target, args); @@ -732,7 +731,7 @@ public static Try> tryToLoadClass(String name) { @API(status = INTERNAL, since = "1.11") public static Class loadRequiredClass(String name, ClassLoader classLoader) throws JUnitException { return tryToLoadClass(name, classLoader).getNonNullOrThrow( - cause -> new JUnitException(format("Could not load class [%s]", name), cause)); + cause -> new JUnitException("Could not load class [%s]".formatted(name), cause)); } /** @@ -891,7 +890,7 @@ public static String getFullyQualifiedMethodName(String className, String method Preconditions.notBlank(methodName, "Method name must not be null or blank"); Preconditions.notNull(parameterTypeNames, "Parameter type names must not be null"); - return String.format("%s#%s(%s)", className, methodName, parameterTypeNames); + return "%s#%s(%s)".formatted(className, methodName, parameterTypeNames); } /** @@ -1276,7 +1275,7 @@ public static Constructor getDeclaredConstructor(Class clazz) { .toArray(Constructor[]::new); Preconditions.condition(constructors.length == 1, - () -> String.format("Class [%s] must declare a single constructor", clazz.getName())); + () -> "Class [%s] must declare a single constructor".formatted(clazz.getName())); return (Constructor) constructors[0]; } @@ -1492,7 +1491,7 @@ private static Class loadRequiredParameterType(Class clazz, String methodN // @formatter:off return tryToLoadClass(typeName, classLoader) .getNonNullOrThrow(cause -> new JUnitException( - String.format("Failed to load parameter type [%s] for method [%s] in class [%s].", + "Failed to load parameter type [%s] for method [%s] in class [%s].".formatted( typeName, methodName, clazz.getName()), cause)); // @formatter:on } @@ -1558,8 +1557,8 @@ private static Optional findMethod(Class clazz, Predicate pre */ @API(status = STABLE, since = "1.7") public static Method getRequiredMethod(Class clazz, String methodName, Class... parameterTypes) { - return ReflectionUtils.findMethod(clazz, methodName, parameterTypes).orElseThrow( - () -> new JUnitException(format("Could not find method [%s] in class [%s]", methodName, clazz.getName()))); + return ReflectionUtils.findMethod(clazz, methodName, parameterTypes).orElseThrow(() -> new JUnitException( + "Could not find method [%s] in class [%s]".formatted(methodName, clazz.getName()))); } /** @@ -1964,7 +1963,7 @@ public enum CycleErrorHandling { THROW_EXCEPTION { @Override void handle(Class clazz, Class enclosing) { - throw new JUnitException(String.format("Detected cycle in inner class hierarchy between %s and %s", + throw new JUnitException("Detected cycle in inner class hierarchy between %s and %s".formatted( clazz.getName(), enclosing.getName())); } }, diff --git a/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/ConcurrencyTestingUtils.java b/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/ConcurrencyTestingUtils.java index 49818e769298..057dc98d986a 100644 --- a/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/ConcurrencyTestingUtils.java +++ b/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/ConcurrencyTestingUtils.java @@ -70,4 +70,7 @@ public static void executeConcurrently(int threads, Runnable action) throws Exce } } } + + private ConcurrencyTestingUtils() { + } } diff --git a/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/IdeUtils.java b/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/IdeUtils.java index 1b20c64c8113..153cfba3e205 100644 --- a/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/IdeUtils.java +++ b/junit-platform-commons/src/testFixtures/java/org/junit/platform/commons/test/IdeUtils.java @@ -24,4 +24,7 @@ public static boolean runningInEclipse() { stream -> stream.anyMatch(stackFrame -> stackFrame.getClassName().startsWith("org.eclipse.jdt"))); } + private IdeUtils() { + } + } diff --git a/junit-platform-console/src/main/java/org/junit/platform/console/ConsoleLauncher.java b/junit-platform-console/src/main/java/org/junit/platform/console/ConsoleLauncher.java index 929ec8c035fe..6232d7d5c5b7 100644 --- a/junit-platform-console/src/main/java/org/junit/platform/console/ConsoleLauncher.java +++ b/junit-platform-console/src/main/java/org/junit/platform/console/ConsoleLauncher.java @@ -47,4 +47,7 @@ private static CommandFacade newCommandFacade(CustomClassLoaderCloseStrategy cla outputOptions, classLoaderCleanupStrategy)); } + private ConsoleLauncher() { + } + } diff --git a/junit-platform-console/src/main/java/org/junit/platform/console/options/ConsoleUtils.java b/junit-platform-console/src/main/java/org/junit/platform/console/options/ConsoleUtils.java index d470acbd7963..e0a33bc99d0c 100644 --- a/junit-platform-console/src/main/java/org/junit/platform/console/options/ConsoleUtils.java +++ b/junit-platform-console/src/main/java/org/junit/platform/console/options/ConsoleUtils.java @@ -41,4 +41,7 @@ public static Charset charset() { return console != null ? console.charset() : Charset.defaultCharset(); } + private ConsoleUtils() { + } + } diff --git a/junit-platform-console/src/main/java/org/junit/platform/console/tasks/DiscoveryRequestCreator.java b/junit-platform-console/src/main/java/org/junit/platform/console/tasks/DiscoveryRequestCreator.java index fd687ba632be..67a74a9179b7 100644 --- a/junit-platform-console/src/main/java/org/junit/platform/console/tasks/DiscoveryRequestCreator.java +++ b/junit-platform-console/src/main/java/org/junit/platform/console/tasks/DiscoveryRequestCreator.java @@ -156,4 +156,7 @@ private static ClassNameFilter includedClassNamePatterns(TestDiscoveryOptions op return includeClassNamePatterns(patternStreams.toArray(String[]::new)); } + private DiscoveryRequestCreator() { + } + } diff --git a/junit-platform-console/src/main/java/org/junit/platform/console/tasks/TestFeedPrintingListener.java b/junit-platform-console/src/main/java/org/junit/platform/console/tasks/TestFeedPrintingListener.java index cfe4ecb37a60..c9174ec09605 100644 --- a/junit-platform-console/src/main/java/org/junit/platform/console/tasks/TestFeedPrintingListener.java +++ b/junit-platform-console/src/main/java/org/junit/platform/console/tasks/TestFeedPrintingListener.java @@ -55,7 +55,7 @@ public void executionSkipped(TestIdentifier testIdentifier, String reason) { String msg = formatTestIdentifier(testIdentifier); String indentedReason = indented("Reason: %s".formatted(reason)); println(Style.SKIPPED, - String.format("%s" + STATUS_SEPARATOR + "SKIPPED%n" + INDENTATION + "%s", msg, indentedReason)); + ("%s" + STATUS_SEPARATOR + "SKIPPED%n" + INDENTATION + "%s").formatted(msg, indentedReason)); } } @@ -63,7 +63,7 @@ public void executionSkipped(TestIdentifier testIdentifier, String reason) { public void executionStarted(TestIdentifier testIdentifier) { if (shouldPrint(testIdentifier)) { String msg = formatTestIdentifier(testIdentifier); - println(Style.NONE, String.format("%s" + STATUS_SEPARATOR + "STARTED", msg)); + println(Style.NONE, ("%s" + STATUS_SEPARATOR + "STARTED").formatted(msg)); } } @@ -75,13 +75,12 @@ public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult String msg = formatTestIdentifier(testIdentifier); Throwable throwable = testExecutionResult.getThrowable().get(); String stacktrace = indented(ExceptionUtils.readStackTrace(throwable)); - println(style, - String.format("%s" + STATUS_SEPARATOR + "%s%n" + INDENTATION + "%s", msg, status, stacktrace)); + println(style, ("%s" + STATUS_SEPARATOR + "%s%n" + INDENTATION + "%s").formatted(msg, status, stacktrace)); } else if (shouldPrint(testIdentifier) || testExecutionResult.getStatus() != SUCCESSFUL) { Style style = Style.valueOf(testExecutionResult); String msg = formatTestIdentifier(testIdentifier); - println(style, String.format("%s" + STATUS_SEPARATOR + "%s", msg, status)); + println(style, ("%s" + STATUS_SEPARATOR + "%s").formatted(msg, status)); } } diff --git a/junit-platform-console/src/main/java/org/junit/platform/console/tasks/VerboseTreePrintingListener.java b/junit-platform-console/src/main/java/org/junit/platform/console/tasks/VerboseTreePrintingListener.java index 103621853033..a2e7de6ebb93 100644 --- a/junit-platform-console/src/main/java/org/junit/platform/console/tasks/VerboseTreePrintingListener.java +++ b/junit-platform-console/src/main/java/org/junit/platform/console/tasks/VerboseTreePrintingListener.java @@ -174,7 +174,7 @@ private void printDetail(Style style, String detail, String format, Object... ar String detailFormat = "%9s"; // omit detail string if it's empty if (!detail.isEmpty()) { - printf(NONE, "%s", String.format(detailFormat + ": ", detail)); + printf(NONE, "%s", (detailFormat + ": ").formatted(detail)); } // trivial case: at least one arg is given? Let printf do the entire work if (args.length > 0) { @@ -185,7 +185,7 @@ private void printDetail(Style style, String detail, String format, Object... ar String[] lines = format.split("\\R"); printf(style, "%s", lines[0]); if (lines.length > 1) { - String delimiter = System.lineSeparator() + verticals + String.format(detailFormat + " ", ""); + String delimiter = System.lineSeparator() + verticals + (detailFormat + " ").formatted(""); for (int i = 1; i < lines.length; i++) { printf(NONE, "%s", delimiter); printf(style, "%s", lines[i]); diff --git a/junit-platform-engine/src/main/java/org/junit/platform/engine/ExecutionRequest.java b/junit-platform-engine/src/main/java/org/junit/platform/engine/ExecutionRequest.java index cc0a671a0eb0..16afe7fae878 100644 --- a/junit-platform-engine/src/main/java/org/junit/platform/engine/ExecutionRequest.java +++ b/junit-platform-engine/src/main/java/org/junit/platform/engine/ExecutionRequest.java @@ -67,7 +67,6 @@ private ExecutionRequest(TestDescriptor rootTestDescriptor, EngineExecutionListe this.outputDirectoryProvider = outputDirectoryProvider; this.requestLevelStore = requestLevelStore; this.cancellationToken = Preconditions.notNull(cancellationToken, "cancellationToken must not be null"); - ; } /** diff --git a/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/DiscoverySelectorIdentifierParsers.java b/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/DiscoverySelectorIdentifierParsers.java index f844100d44d6..07d467c32ae0 100644 --- a/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/DiscoverySelectorIdentifierParsers.java +++ b/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/DiscoverySelectorIdentifierParsers.java @@ -83,4 +83,7 @@ private enum Singleton { } + private DiscoverySelectorIdentifierParsers() { + } + } diff --git a/junit-platform-engine/src/main/java/org/junit/platform/engine/support/discovery/ResourceUtils.java b/junit-platform-engine/src/main/java/org/junit/platform/engine/support/discovery/ResourceUtils.java index 127b2503952d..6a89461d3d1b 100644 --- a/junit-platform-engine/src/main/java/org/junit/platform/engine/support/discovery/ResourceUtils.java +++ b/junit-platform-engine/src/main/java/org/junit/platform/engine/support/discovery/ResourceUtils.java @@ -45,4 +45,7 @@ private static String packageName(String classpathResourceName) { String resourcePackagePath = classpathResourceName.substring(0, lastIndexOf); return resourcePackagePath.replace(CLASSPATH_RESOURCE_PATH_SEPARATOR, PACKAGE_SEPARATOR_CHAR); } + + private ResourceUtils() { + } } diff --git a/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/ForkJoinPoolHierarchicalTestExecutorService.java b/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/ForkJoinPoolHierarchicalTestExecutorService.java index ced88fc1b946..f1e08f97816e 100644 --- a/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/ForkJoinPoolHierarchicalTestExecutorService.java +++ b/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/ForkJoinPoolHierarchicalTestExecutorService.java @@ -16,6 +16,7 @@ import static org.junit.platform.engine.support.hierarchical.Node.ExecutionMode.CONCURRENT; import static org.junit.platform.engine.support.hierarchical.Node.ExecutionMode.SAME_THREAD; +import java.io.Serial; import java.lang.Thread.UncaughtExceptionHandler; import java.lang.reflect.Constructor; import java.util.ArrayDeque; @@ -223,6 +224,9 @@ public void close() { @SuppressWarnings({ "serial", "RedundantSuppression" }) class ExclusiveTask extends ForkJoinTask { + @Serial + private static final long serialVersionUID = 1; + private final TestTask testTask; ExclusiveTask(TestTask testTask) { diff --git a/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/NodeTestTask.java b/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/NodeTestTask.java index 1f09383680fd..34daa89c156e 100644 --- a/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/NodeTestTask.java +++ b/junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/NodeTestTask.java @@ -125,12 +125,12 @@ public void execute() { // is cleared for reuse of the thread in subsequent task executions. // See https://github.com/junit-team/junit-framework/issues/1688 if (Thread.interrupted()) { - logger.debug(() -> String.format( - "Execution of TestDescriptor with display name [%s] " - + "and unique ID [%s] failed to clear the 'interrupted status' flag for the " - + "current thread. JUnit has cleared the flag, but you may wish to investigate " - + "why the flag was not cleared by user code.", - this.testDescriptor.getDisplayName(), this.testDescriptor.getUniqueId())); + logger.debug(() -> """ + Execution of TestDescriptor with display name [%s] \ + and unique ID [%s] failed to clear the 'interrupted status' flag for the \ + current thread. JUnit has cleared the flag, but you may wish to investigate \ + why the flag was not cleared by user code.""".formatted(this.testDescriptor.getDisplayName(), + this.testDescriptor.getUniqueId())); } finalizer.run(); } diff --git a/junit-platform-engine/src/testFixtures/java/org/junit/platform/fakes/FaultyTestEngines.java b/junit-platform-engine/src/testFixtures/java/org/junit/platform/fakes/FaultyTestEngines.java index 9199a1388af3..86c72353dd16 100644 --- a/junit-platform-engine/src/testFixtures/java/org/junit/platform/fakes/FaultyTestEngines.java +++ b/junit-platform-engine/src/testFixtures/java/org/junit/platform/fakes/FaultyTestEngines.java @@ -60,4 +60,7 @@ public void execute(ExecutionRequest request) { } }; } + + private FaultyTestEngines() { + } } diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java index 5511b56db1fe..9f3fabe91689 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ClasspathAlignmentChecker.java @@ -85,4 +85,7 @@ static Optional check(LinkageError error, Function String.format( - "Invalid DiscoveryIssue.Severity '%s' set via the '%s' configuration parameter. " - + "Falling back to the %s default value.", - value, LauncherConstants.CRITICAL_DISCOVERY_ISSUE_SEVERITY_PROPERTY_NAME, defaultValue)); + logger.warn(() -> """ + Invalid DiscoveryIssue.Severity '%s' set via the '%s' configuration parameter. \ + Falling back to the %s default value.""".formatted(value, + LauncherConstants.CRITICAL_DISCOVERY_ISSUE_SEVERITY_PROPERTY_NAME, defaultValue)); return defaultValue; } }) // diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ServiceLoaderRegistry.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ServiceLoaderRegistry.java index eebd6de021f7..2e7355f90816 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ServiceLoaderRegistry.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/ServiceLoaderRegistry.java @@ -66,4 +66,7 @@ private static Logger getLogger() { return LoggerFactory.getLogger(ServiceLoaderRegistry.class); } + private ServiceLoaderRegistry() { + } + } diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/jfr/JfrUtils.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/jfr/JfrUtils.java index 7ec83dd91fbb..f501098a23de 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/jfr/JfrUtils.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/jfr/JfrUtils.java @@ -35,4 +35,7 @@ private static boolean isJfrAvailable() { return System.getProperty("org.graalvm.nativeimage.imagecode") == null // && ReflectionSupport.tryToLoadClass("jdk.jfr.FlightRecorder").toOptional().isPresent(); } + + private JfrUtils() { + } } diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/tagexpression/TagExpressions.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/tagexpression/TagExpressions.java index 350e6f4d7a68..03fd17e617dd 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/tagexpression/TagExpressions.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/tagexpression/TagExpressions.java @@ -104,4 +104,7 @@ public String toString() { }; } + private TagExpressions() { + } + } diff --git a/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/LauncherFactoryForTestingPurposesOnly.java b/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/LauncherFactoryForTestingPurposesOnly.java index c3909dd105df..6232c8b760c4 100644 --- a/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/LauncherFactoryForTestingPurposesOnly.java +++ b/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/LauncherFactoryForTestingPurposesOnly.java @@ -33,4 +33,7 @@ public static LauncherConfig.Builder createLauncherConfigBuilderWithDisabledServ .enableLauncherSessionListenerAutoRegistration(false); } + private LauncherFactoryForTestingPurposesOnly() { + } + } diff --git a/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/NamespacedHierarchicalStoreProviders.java b/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/NamespacedHierarchicalStoreProviders.java index 7beef2b5f0f1..528d79724c99 100644 --- a/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/NamespacedHierarchicalStoreProviders.java +++ b/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/NamespacedHierarchicalStoreProviders.java @@ -24,4 +24,7 @@ public static NamespacedHierarchicalStore dummyNamespacedHierarchical public static NamespacedHierarchicalStore dummyNamespacedHierarchicalStoreWithNoParent() { return new NamespacedHierarchicalStore<>(null, closeAutoCloseables()); } + + private NamespacedHierarchicalStoreProviders() { + } } diff --git a/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/OutputDirectoryProviders.java b/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/OutputDirectoryProviders.java index b4d30b2b7b8f..c277b9f89fc3 100644 --- a/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/OutputDirectoryProviders.java +++ b/junit-platform-launcher/src/testFixtures/java/org/junit/platform/launcher/core/OutputDirectoryProviders.java @@ -26,4 +26,7 @@ public static OutputDirectoryProvider dummyOutputDirectoryProvider() { public static OutputDirectoryProvider hierarchicalOutputDirectoryProvider(Path rootDir) { return new HierarchicalOutputDirectoryProvider(() -> rootDir); } + + private OutputDirectoryProviders() { + } } diff --git a/junit-platform-reporting/src/testFixtures/java/org/junit/platform/reporting/testutil/FileUtils.java b/junit-platform-reporting/src/testFixtures/java/org/junit/platform/reporting/testutil/FileUtils.java index 04228a9aa1fb..9d21c5d85d98 100644 --- a/junit-platform-reporting/src/testFixtures/java/org/junit/platform/reporting/testutil/FileUtils.java +++ b/junit-platform-reporting/src/testFixtures/java/org/junit/platform/reporting/testutil/FileUtils.java @@ -28,4 +28,7 @@ public static Path findPath(Path rootDir, String syntaxAndPattern) { throw new UncheckedIOException(e); } } + + private FileUtils() { + } } diff --git a/junit-platform-suite-engine/src/main/java/org/junit/platform/suite/engine/AdditionalDiscoverySelectors.java b/junit-platform-suite-engine/src/main/java/org/junit/platform/suite/engine/AdditionalDiscoverySelectors.java index 8def4993f7c8..2c00b7f90c85 100644 --- a/junit-platform-suite-engine/src/main/java/org/junit/platform/suite/engine/AdditionalDiscoverySelectors.java +++ b/junit-platform-suite-engine/src/main/java/org/junit/platform/suite/engine/AdditionalDiscoverySelectors.java @@ -122,4 +122,7 @@ private static Stream uniqueStreamOf(T[] elements) { return Arrays.stream(elements).distinct(); } + private AdditionalDiscoverySelectors() { + } + } diff --git a/junit-platform-testkit/src/main/java/org/junit/platform/testkit/engine/Assertions.java b/junit-platform-testkit/src/main/java/org/junit/platform/testkit/engine/Assertions.java index 2f7d3e157304..993b3425100d 100644 --- a/junit-platform-testkit/src/main/java/org/junit/platform/testkit/engine/Assertions.java +++ b/junit-platform-testkit/src/main/java/org/junit/platform/testkit/engine/Assertions.java @@ -84,4 +84,7 @@ private static String formatValues(long expected, long actual) { return "expected: <%d> but was: <%d>".formatted(expected, actual); } + private Assertions() { + } + } diff --git a/junit-vintage-engine/src/main/java/org/junit/vintage/engine/JUnit4VersionCheck.java b/junit-vintage-engine/src/main/java/org/junit/vintage/engine/JUnit4VersionCheck.java index f27eaef647ca..08d9599cdd47 100644 --- a/junit-vintage-engine/src/main/java/org/junit/vintage/engine/JUnit4VersionCheck.java +++ b/junit-vintage-engine/src/main/java/org/junit/vintage/engine/JUnit4VersionCheck.java @@ -74,4 +74,7 @@ private static String readVersion(Supplier versionSupplier) { } } + private JUnit4VersionCheck() { + } + } diff --git a/jupiter-tests/src/test/java/org/junit/jupiter/params/ParameterizedTestExtensionTests.java b/jupiter-tests/src/test/java/org/junit/jupiter/params/ParameterizedTestExtensionTests.java index 9f589354ae5c..ff3cc6a8b0cd 100644 --- a/jupiter-tests/src/test/java/org/junit/jupiter/params/ParameterizedTestExtensionTests.java +++ b/jupiter-tests/src/test/java/org/junit/jupiter/params/ParameterizedTestExtensionTests.java @@ -202,9 +202,9 @@ void throwsExceptionWhenArgumentsProviderDoesNotContainUnambiguousConstructor() String className = AmbiguousConstructorArgumentsProvider.class.getName(); assertThat(exception) // - .hasMessage(String.format("Failed to find constructor for ArgumentsProvider [%s]. " - + "Please ensure that a no-argument or a single constructor exists.", - className)); + .hasMessage(""" + Failed to find constructor for ArgumentsProvider [%s]. \ + Please ensure that a no-argument or a single constructor exists.""", className); } private ExtensionContext getExtensionContextReturningSingleMethod(Object testCase) { diff --git a/platform-tooling-support-tests/src/main/java/platform/tooling/support/Helper.java b/platform-tooling-support-tests/src/main/java/platform/tooling/support/Helper.java index 0df95dd15ca8..af7379ebeb53 100644 --- a/platform-tooling-support-tests/src/main/java/platform/tooling/support/Helper.java +++ b/platform-tooling-support-tests/src/main/java/platform/tooling/support/Helper.java @@ -51,8 +51,8 @@ public static List loadModuleDirectoryNames() { .filter(Matcher::matches) // .map(matcher -> matcher.group(1)) // .filter(name -> name.startsWith("junit-")) // - .filter(name -> !name.equals("junit-bom")) // - .filter(name -> !name.equals("junit-platform-console-standalone")).toList(); + .filter(name -> !"junit-bom".equals(name)) // + .filter(name -> !"junit-platform-console-standalone".equals(name)).toList(); } catch (Exception e) { throw new AssertionError("loading module directory names failed: " + SETTINGS_GRADLE); @@ -77,4 +77,7 @@ public static Optional getJavaHomeWithNativeImageSupport(int version) { var value = System.getProperty("java.home." + version + ".nativeImage"); return Optional.ofNullable(value).map(Path::of); } + + private Helper() { + } } diff --git a/platform-tooling-support-tests/src/main/java/platform/tooling/support/ProcessStarters.java b/platform-tooling-support-tests/src/main/java/platform/tooling/support/ProcessStarters.java index 94df6091b784..0fc656e669c8 100644 --- a/platform-tooling-support-tests/src/main/java/platform/tooling/support/ProcessStarters.java +++ b/platform-tooling-support-tests/src/main/java/platform/tooling/support/ProcessStarters.java @@ -73,4 +73,7 @@ public static Optional getGradleJavaHome() { public static int getGradleJavaVersion() { return Integer.parseInt(System.getProperty("gradle.java.version")); } + + private ProcessStarters() { + } }