![](/img/trans.png)
[英]JUnit/Mockito Test case gets passed in Debug Mode but not in Run mode
[英]Mockito fails in debug mode
在调试测试时,我意识到有些东西正在干扰 Mockito 的正常运行。 不知何故,在特定类中包含断点会导致不同的 output。
我试着用一个简单的例子来说明它。
public class MockitoTrial {
@Test
public void simpleTest() {
var func = Mockito.mock(Function.class);
Entry<String, Integer> entry = new SimpleEntry<>("one", 1);
when(func.apply(eq(Entry.class))).thenReturn(entry);
assertThat(func.apply(Entry.class)).isEqualTo(entry);
}
}
例如,如果我在org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.interceptAbstract
中设置一个断点,并在调试模式下重新运行它,测试将失败。
它似乎显然与 IDE 无关,因为它在远程调试时也会发生。
我正在使用的库版本:
assertj-core-3.22.0
junit-jupiter-api-5.8.2
mockito-core-4.5.1
Jonasz 指出的问题提供了很好的线索。
如果我改为在org.mockito.internal.handler.MockHandlerImpl.handle
中设置断点,即使在调试模式下测试也已经通过。
现在,我为表达式invocation.getMock().toString()
添加一个观察器,并在调试模式下重新运行它。 这样做,我让测试再次失败。
Mockito 对其处理之间的模拟方法调用非常敏感。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.