From 4b7e53e7a998af9d296fb5ea437ef5e6ec8f16cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Padula?= Date: Fri, 15 Dec 2023 15:46:39 +0100 Subject: [PATCH] GH-2927: Subclasses for EmbeddedKafkaBroker param Fixes: #2927 Starting a test without spring context with Embeded Lafka without `kraft` enabled and `EmbeddedKafkaZKBroker` as a test's parameter results in an exception: ``` No ParameterResolver registered for parameter [org.springframework.kafka.test.EmbeddedKafkaZKBroker broker] in method [public void test.SomeTest.test(org.springframework.kafka.test.EmbeddedKafkaZKBroker)]. org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [org.springframework.kafka.test.EmbeddedKafkaZKBroker broker] in method [public void test.SomeTest.test(org.springframework.kafka.test.EmbeddedKafkaZKBroker)]. ``` For test config: ``` @Test public void test(EmbeddedKafkaZKBroker broker) ``` * Fix `EmbeddedKafkaCondition` to use `EmbeddedKafkaBroker.class.isAssignableFrom(parameterContext.getParameter().getType());` instead of just `parameterContext.getParameter().getType().equals(EmbeddedKafkaBroker.class)` --- .../kafka/test/condition/EmbeddedKafkaCondition.java | 3 ++- .../kafka/test/condition/EmbeddedKafkaConditionTests.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-kafka-test/src/main/java/org/springframework/kafka/test/condition/EmbeddedKafkaCondition.java b/spring-kafka-test/src/main/java/org/springframework/kafka/test/condition/EmbeddedKafkaCondition.java index 706d84dc..103f0366 100644 --- a/spring-kafka-test/src/main/java/org/springframework/kafka/test/condition/EmbeddedKafkaCondition.java +++ b/spring-kafka-test/src/main/java/org/springframework/kafka/test/condition/EmbeddedKafkaCondition.java @@ -54,6 +54,7 @@ import org.springframework.util.StringUtils; * @author Artem Bilan * @author Pawel Lozinski * @author Adrian Chlebosz + * @author Michał Padula * * @since 2.3 * @@ -72,7 +73,7 @@ public class EmbeddedKafkaCondition implements ExecutionCondition, AfterAllCallb return false; } else { - return parameterContext.getParameter().getType().equals(EmbeddedKafkaBroker.class); + return EmbeddedKafkaBroker.class.isAssignableFrom(parameterContext.getParameter().getType()); } } diff --git a/spring-kafka-test/src/test/java/org/springframework/kafka/test/condition/EmbeddedKafkaConditionTests.java b/spring-kafka-test/src/test/java/org/springframework/kafka/test/condition/EmbeddedKafkaConditionTests.java index 27b5a93a..012d4222 100644 --- a/spring-kafka-test/src/test/java/org/springframework/kafka/test/condition/EmbeddedKafkaConditionTests.java +++ b/spring-kafka-test/src/test/java/org/springframework/kafka/test/condition/EmbeddedKafkaConditionTests.java @@ -21,11 +21,14 @@ import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; import org.springframework.kafka.test.EmbeddedKafkaBroker; +import org.springframework.kafka.test.EmbeddedKafkaZKBroker; import org.springframework.kafka.test.context.EmbeddedKafka; import org.springframework.kafka.test.utils.KafkaTestUtils; /** * @author Gary Russell + * @author Michał Padula + * * @since 2.3 * */ @@ -41,4 +44,9 @@ public class EmbeddedKafkaConditionTests { assertThat(broker.getPartitionsPerTopic()).isEqualTo(3); } + @Test + public void testResolver(EmbeddedKafkaZKBroker broker) { + assertThat(broker).isNotNull(); + } + }