测试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
相关产品推荐
相关产品推荐

