diff --git a/core/spring-boot-docker-compose/build.gradle b/core/spring-boot-docker-compose/build.gradle index 1dd48e1313c..f0a627e2a68 100644 --- a/core/spring-boot-docker-compose/build.gradle +++ b/core/spring-boot-docker-compose/build.gradle @@ -32,6 +32,8 @@ dependencies { dockerTestImplementation(project(":test-support:spring-boot-docker-test-support")) + dockerTestRuntimeOnly("org.testcontainers:testcontainers") + testImplementation(project(":core:spring-boot-test")) testImplementation(project(":test-support:spring-boot-test-support")) testImplementation("ch.qos.logback:logback-classic") diff --git a/test-support/spring-boot-docker-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java b/test-support/spring-boot-docker-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java index c29318870da..246fb46e9c7 100644 --- a/test-support/spring-boot-docker-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java +++ b/test-support/spring-boot-docker-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java @@ -21,6 +21,9 @@ import org.junit.jupiter.api.extension.ExecutionCondition; import org.junit.jupiter.api.extension.ExtensionContext; import org.testcontainers.DockerClientFactory; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + /** * An {@link ExecutionCondition} that disables execution if Docker is unavailable. * @@ -30,12 +33,17 @@ import org.testcontainers.DockerClientFactory; */ class DisabledIfDockerUnavailableCondition implements ExecutionCondition { + private static final boolean TESTCONTAINERS_PRESENT = ClassUtils.isPresent("org.testcontainers.DockerClientFactory", + DisabledIfDockerUnavailableCondition.class.getClassLoader()); + private static final String SILENCE_PROPERTY = "visibleassertions.silence"; private static final ConditionEvaluationResult ENABLED = ConditionEvaluationResult.enabled("Docker available"); @Override public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) { + Assert.isTrue(TESTCONTAINERS_PRESENT, "Testcontainers is required when using @DisabledIfDockerUnavailable." + + " Add a dependency on org.testcontainers:testcontainers"); String originalSilenceValue = System.getProperty(SILENCE_PROPERTY); try { DockerClientFactory.instance().client();