diff --git a/spring-boot-samples/spring-boot-sample-kafka/src/main/java/sample/kafka/Consumer.java b/spring-boot-samples/spring-boot-sample-kafka/src/main/java/sample/kafka/Consumer.java index 324351dd7f..a8cfd1dbf3 100644 --- a/spring-boot-samples/spring-boot-sample-kafka/src/main/java/sample/kafka/Consumer.java +++ b/spring-boot-samples/spring-boot-sample-kafka/src/main/java/sample/kafka/Consumer.java @@ -16,15 +16,25 @@ package sample.kafka; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; @Component class Consumer { + private final List messages = new CopyOnWriteArrayList<>(); + @KafkaListener(topics = "testTopic") public void processMessage(SampleMessage message) { + this.messages.add(message); System.out.println("Received sample message [" + message + "]"); } + List getMessages() { + return this.messages; + } + } diff --git a/spring-boot-samples/spring-boot-sample-kafka/src/test/java/sample/kafka/SampleKafkaApplicationTests.java b/spring-boot-samples/spring-boot-sample-kafka/src/test/java/sample/kafka/SampleKafkaApplicationTests.java index d1c88c7036..40ee4f9b51 100644 --- a/spring-boot-samples/spring-boot-sample-kafka/src/test/java/sample/kafka/SampleKafkaApplicationTests.java +++ b/spring-boot-samples/spring-boot-sample-kafka/src/test/java/sample/kafka/SampleKafkaApplicationTests.java @@ -15,11 +15,12 @@ */ package sample.kafka; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.RegisterExtension; +import java.util.List; +import org.junit.jupiter.api.Test; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.extension.OutputCapture; import org.springframework.kafka.test.context.EmbeddedKafka; import static org.assertj.core.api.Assertions.assertThat; @@ -36,17 +37,15 @@ import static org.assertj.core.api.Assertions.assertThat; @EmbeddedKafka public class SampleKafkaApplicationTests { - @RegisterExtension - OutputCapture output = new OutputCapture(); - @Test - public void testVanillaExchange() throws Exception { + public void testVanillaExchange(@Autowired Consumer consumer) throws Exception { long end = System.currentTimeMillis() + 10000; - while (!this.output.toString().contains("A simple test message") - && System.currentTimeMillis() < end) { + List messages = consumer.getMessages(); + while (messages.size() != 1 && System.currentTimeMillis() < end) { Thread.sleep(250); } - assertThat(this.output).contains("A simple test message"); + assertThat(messages).hasSize(1); + assertThat(messages.get(0).getMessage()).isEqualTo("A simple test message"); } }