繁体   English   中英

Mockito 在调试模式下失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM