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

如何编写测试验证Java方法内各List是否按规则存入对应数量的消息

实现方案

你可以用Mockito参数捕获的方式来验证三个列表的元素数量,步骤如下:

  • 第一步:引入测试依赖,常用组合为JUnit+Mockito,Spring Boot项目默认已经集成这两个框架,无需额外引入。
  • 第二步:注意你贴的原代码存在笔误:第一个if分支里的list.add(message)应该是list1.add(message),否则会编译报错,测试前先修复这个问题。
  • 第三步:编写测试代码,核心逻辑是mock service对象,捕获makeApiCall方法传入的Map参数,再校验Map中三个列表的长度即可。

测试代码示例(JUnit 5 + Mockito)

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.verify;

// 这里换成你自己的类名
@ExtendWith(MockitoExtension.class)
public class MessageProcessorTest {

    // mock掉依赖的service
    @Mock
    private Service service; // 这里Service换成你自己的service实际类名

    // 把mock的service注入到要测试的类中
    @InjectMocks
    private MessageProcessor messageProcessor; // 这里MessageProcessor换成你自己的包含process方法的类名

    @Test
    public void testProcess_ListsCountMatchExpectation() {
        // 1. 构造测试入参:2条含123,3条含456,4条都不符合,总共9条
        List<String> testMessages = List.of(
                "a123", "b123",
                "c456", "d456", "e456",
                "f", "g", "h", "i"
        );

        // 2. 调用process方法
        messageProcessor.process(testMessages);

        // 3. 捕获传给makeApiCall的Map参数
        ArgumentCaptor<Map<String, List<String>>> mapCaptor = ArgumentCaptor.forClass(Map.class);
        verify(service).makeApiCall(mapCaptor.capture());
        Map<String, List<String>> actualMap = mapCaptor.getValue();

        // 4. 校验三个列表的数量是否符合预期
        assertEquals(2, actualMap.get("123").size());
        assertEquals(3, actualMap.get("345").size());
        assertEquals(4, actualMap.get("678").size());
    }
}

如果你需要更细粒度的校验,也可以直接校验列表里的具体元素内容,只要把assertEquals的第二个参数换成你预期的列表即可。

内容的提问来源于stack exchange,提问作者JS noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:06:07