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

Mockito Verify报Wanted but not invoked错误,mock零交互问题排查求助

Mockito 报错原因分析

以下是导致Wanted but not invoked错误的核心问题,以及其他需要修正的代码错误:

  • 测试执行顺序错误(核心报错原因)
    Mockito.verify的作用是验证mock方法已经被调用,你将校验逻辑放在了被测方法执行和打桩逻辑之前,此时mock对象还没有产生任何交互,自然触发无调用的报错。正确的测试执行顺序为:先完成mock方法打桩 -> 执行被测业务方法 -> 最后做调用校验。
  • 业务类变量拼写笔误
    serviceclass中注入的成员变量名为rclass,但doMethod方法里调用时误写为rlcass,该错误会导致注入的mock对象无法被正确调用,也是潜在的报错诱因。
  • 测试方法不符合JUnit规范
    你的测试方法缺少@Test注解,JUnit不会识别该方法为测试用例执行,同时方法定义缺少参数括号,不符合Java语法要求。
修正后参考代码

单元测试类核心逻辑修正

@RunWith(MockitoJUnitRunner.class)  
public class testclass{  
    @InjectMocks  
    private serviceclass sclass;
    @Mock
    MessageReplyingSender rclass;
    
    @Test
    public void test() throws Exception{
        // 1. 先对mock方法打桩
        Mockito.when(rclass.something(Mockito.anyString(), Mockito.anyString(), Mockito.any(), Mockito.anyLong())).thenReturn("gh");
        // 2. 执行被测业务方法
        sclass.doMethod();
        // 3. 最后校验mock方法调用
        Mockito.verify(rclass).something(Mockito.anyString(), Mockito.anyString(), Mockito.any(), Mockito.anyLong());
    }
}

业务类拼写修正

@Service   
public class serviceclass{
    @Autowired  
    MessageReplyingSender rclass;
    public void doMethod(){
        // 修正变量拼写错误
        Object o = rclass.something("hey","hey",null,1000);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:03