You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mockito编写Spring Boot Kafka监听器测试,解决Jacoco覆盖率为0问题

Kafka监听器的Mockito测试方案(解决Jacoco覆盖率为0问题)

我编写的Kafka消息监听器代码如下:

@KafkaListener(groupId = "group", topics = "topic")
public void consume(String message) {
    log.info(message);
    serviceProcess.process(message);
}

class ServiceProcess {
    public boolean process(String str) {
        // 业务逻辑实现
    }
}

遇到的问题:使用Embedded方式编写测试用例时,Jacoco显示覆盖率为0,因此需要仅用Mockito编写测试,满足以下要求:

  • 测试无返回值(void)的consume方法
  • 测试用例基于Mockito实现

对应的Mockito测试解决方案代码如下:

@ExtendWith(MockitoExtension.class)
public class MessageConsumerTest {

    @Mock
    ServiceProcess serviceProcess;
    @InjectMocks
    MessageConsumer messageConsumer; // 假设监听器所在类为MessageConsumer

    @Test
    void consumeTest() {
        String testMessage = "test-content";
        // 直接调用监听器的consume方法,传入测试消息
        messageConsumer.consume(testMessage);
        // 验证依赖的process方法被调用1次,参数匹配测试消息
        verify(serviceProcess, times(1)).process(testMessage);
    }
}

注:原参考方案中的listener方法和MessageConsumerService需对应实际的监听器方法与依赖类,上述代码已根据原监听器逻辑做修正,确保测试逻辑匹配。

内容的提问来源于stack exchange,提问作者Ravi Thapa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:54:29