【问题标题】:How can I test method with @KafkaListener annotation in spring-boot application?如何在 spring-boot 应用程序中使用 @KafkaListener 注释测试方法?
【发布时间】:2019-09-05 09:32:06
【问题描述】:

我有一个带有@KafkaListener 方法的spring 组件:

@Slf4j
@Component
public class ResponseHandler {

    private final ResponseMessageService responseMessageService;

    public ResponseHandler(ResponseMessageService responseMessageService) {
        this.responseMessageService= responseMessageService;
    }

    @KafkaListener(topics = "response-topic", groupId = "response-group")
    public void listen(ResponseMessage responseMessage) {
        responseMessageService.processResponse(responseMessage);
    }
}

现在,我想测试这个方法。我想确保此方法正确接收消息。我尝试创建a Unit test:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ResponseHandlerTest {

    @ClassRule
    public static EmbeddedKafkaRule broker = new EmbeddedKafkaRule(1, false, 5, "response-topic");

    @BeforeClass
    public static void setup() {
        System.setProperty("spring.kafka.bootstrap-servers", broker.getEmbeddedKafka().getBrokersAsString());
    }

    @Test
    public void listen() {
    }
}

但我不明白接下来会发生什么。如何测试这个方法?

【问题讨论】:

标签: unit-testing spring-boot spring-kafka embedded-kafka spring-kafka-test


【解决方案1】:

请参阅this answer 了解一种方法。

另外,请阅读 Artem Bilan 对同一问题的回答。

最后,您可以在测试用例中将 ResponseMessageService 替换为模拟对象,并验证它是否按预期调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2021-09-04
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多