diff --git a/spring-test/src/main/java/org/springframework/test/context/junit/jupiter/DisabledIfCondition.java b/spring-test/src/main/java/org/springframework/test/context/junit/jupiter/DisabledIfCondition.java index 93458fe757ed6dacdeb760ca10c715a864ded157..cff88c74d6a7270fbab7b51557b42c722addc6d1 100644 --- a/spring-test/src/main/java/org/springframework/test/context/junit/jupiter/DisabledIfCondition.java +++ b/spring-test/src/main/java/org/springframework/test/context/junit/jupiter/DisabledIfCondition.java @@ -82,9 +82,11 @@ public class DisabledIfCondition implements ContainerExecutionCondition, TestExe Optional disabledIf = findMergedAnnotation(element, DisabledIf.class); Assert.state(disabledIf.isPresent(), () -> "@DisabledIf must be present on " + element); - String expression = disabledIf.map(DisabledIf::expression).filter(StringUtils::hasText).orElseThrow( - () -> new IllegalStateException( - String.format("The expression in @DisabledIf on [%s] must not be blank", element))); + // @formatter:off + String expression = disabledIf.map(DisabledIf::expression).map(String::trim).filter(StringUtils::hasLength) + .orElseThrow(() -> new IllegalStateException(String.format( + "The expression in @DisabledIf on [%s] must not be blank", element))); + // @formatter:on if (isDisabled(expression, extensionContext)) { String reason = disabledIf.map(DisabledIf::reason).filter(StringUtils::hasText).orElseGet( diff --git a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/DisabledIfTestCase.java b/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/DisabledIfTestCase.java index ca31dd665e7129431eb0b8a5f92ca3f67d746478..aee2a06cbf2b601c234733cc96e7b9cca169e07a 100644 --- a/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/DisabledIfTestCase.java +++ b/spring-test/src/test/java/org/springframework/test/context/junit/jupiter/DisabledIfTestCase.java @@ -50,6 +50,12 @@ class DisabledIfTestCase { fail("This test must be disabled"); } + @Test + @DisabledIf(" true ") + void disabledByStringTrueWithSurroundingWhitespace() { + fail("This test must be disabled"); + } + @Test @DisabledIf("TrUe") void disabledByStringTrueIgnoreCase() { @@ -62,12 +68,24 @@ class DisabledIfTestCase { fail("This test must be disabled"); } + @Test + @DisabledIf("\t${foo} ") + void disabledByPropertyPlaceholderWithSurroundingWhitespace() { + fail("This test must be disabled"); + } + @Test @DisabledIf("#{T(java.lang.Boolean).TRUE}") void disabledBySpelBoolean() { fail("This test must be disabled"); } + @Test + @DisabledIf(" #{T(java.lang.Boolean).TRUE} ") + void disabledBySpelBooleanWithSurroundingWhitespace() { + fail("This test must be disabled"); + } + @Test @DisabledIf("#{'tr' + 'ue'}") void disabledBySpelStringConcatenation() {