升级到Mockito 5.x.x后,测试用例开始失败,显示在日志消息中提到的模拟上的交互。
在Mockito 5.x.x之前,下面的代码工作正常。
@Test
void name() {
Thread mockThread = Mockito.mock(Thread.class);
logger.info("name ={}", mockThread.getName() ); //org.slf4j.Logger
mockThread.start();
Mockito.verify(mockThread).start();
Mockito.verifyNoMoreInteractions(mockThread);
}
是否可以跳过日志消息中未计数的模拟交互,就像在Mockito 4.x.x中一样?
1条答案
按热度按时间jhiyze9q1#
首先,Mockito 4跳过模拟交互的原因与日志记录无关。事实上,当你运行这条线时:
你没有从log方法调用
mockThread.getName()
。实际上,您直接从测试方法调用它,获取结果字符串并将其传递给log方法。使用Mockito 4的测试甚至通过了以下测试:
原因似乎是Mockito 4,出于某种奇怪的原因,没有将
Thread.getName()
注册为调用。这似乎是一个错误或不直观的行为,我建议升级到Mockito 5并添加在
verifyNoMoreInteractions
之前,使您的测试通过。