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

测试LocalizedCollatorProvider时遭遇Unnecessary stubbing错误求助

解决Mockito的Unnecessary Stubbing错误

先明确错误根源:你给LocalizedCollatorProvider的mock对象stub了getCollator()方法,但测试用例里根本没调用这个stub的方法,或者说你完全没必要mock这个类——毕竟它逻辑简单,没有复杂外部依赖。

给你几个可行的解决方向:

1. 直接用真实类实例,别mock

这个类的逻辑只是返回指定区域的Collator,没有任何需要mock的外部依赖,直接实例化真实对象测试更准确,也能避免这类错误:

@Test
void testGetCollator() {
    LocalizedCollatorProvider provider = new LocalizedCollatorProvider();
    Collator collator = provider.getCollator();
    
    // 验证返回的Collator区域是否正确
    assertEquals(new Locale("pl", "PL"), collator.getLocale());
}

2. 确保测试中调用了stub的方法

如果你确实需要mock这个类(比如它是某个依赖的一部分),那必须保证测试逻辑里实际调用了collatorProvider.getCollator(),这样Mockito就不会认为这个stub是多余的。

3. 宽松模式(不推荐)

如果非要保留这个未被调用的stub,可以关闭Mockito的严格检查:

  • 在测试类上加注解:@MockitoSettings(strictness = Strictness.LENIENT)
  • 或者创建mock时指定宽松模式:LocalizedCollatorProvider collatorProvider = mock(LocalizedCollatorProvider.class, withSettings().strictness(Strictness.LENIENT));
    不过这种做法会降低测试的严谨性,可能隐藏其他无用代码,尽量不用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:35:00