用例全部通过,收尾时报 UnnecessaryStubbingException 列出三处 stubbing,按提示删掉之后另一条断言又开始失败。日志里能对上时间点,这种反而好排。

严格模式按类统计打桩有没有被用到,几个用例共用的准备方法里打了全部分支的桩,单个用例只走其中一条,其余就被判成多余,删桩等于动了共用的准备逻辑。这一点先确认清楚,后面就不用反复试。

@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
lenient().when(repo.find(1L)).thenReturn(o);

「Mockito 多余打桩」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。

处理上按这个顺序:先看异常里列出的方法和行号对应哪个用例;只服务单个用例的桩下沉到该用例;共用桩加 lenient 并注明保留原因。

结果对不对很好判断,异常不再出现,被删掉的桩确认没有被任何用例依赖。

作者 9823189