Intellij idea 调试模式下的Mockito,断点结果为错误类型的返回值

Intellij idea 调试模式下的Mockito,断点结果为错误类型的返回值,intellij-idea,mockito,Intellij Idea,Mockito,这里有一个简单的片段 @Component public class SomeDependency { public Optional<Integer> getSomeInt(String string) { return Optional.of(1); } } @Component public class SomeService { @Autowired private SomeDependency someDependency

这里有一个简单的片段

@Component
public class SomeDependency {
    public Optional<Integer> getSomeInt(String string) {
        return Optional.of(1);
    }
}

@Component
public class SomeService {

    @Autowired
    private SomeDependency someDependency;

    public String someMethod(String string) {
        return String.valueOf(someDependency.getSomeInt(string).get());
    }
}

@RunWith(MockitoJUnitRunner.class)
public class SomeServiceTest {

    @Mock
    private SomeDependency someDependency;

    @InjectMocks
    private SomeService someService;

    @Test
    public void test() {
        when(someDependency.getSomeInt(anyString()))
                .thenReturn(Optional.of(111));

        String value = someService.someMethod("test");

        assertThat(value, is("111"));
    }
}
但是,如果我用跟随一行程序而不是跟随两行程序,就可以了。没有返回错误

when(someDependency.getSomeInt(anyString())).thenReturn(Optional.of(111));

那么,问题出在哪里呢?

您是否在使用idea进行调试?idea调试器可能会中断存根过程


转到首选项->构建、执行、部署->调试器->数据视图->Java,取消启用“toString()”对象视图复选框与我遇到的问题相同。因此,我尝试在步骤(F7)中使用IntelliJ调试Mockito(2.15)jar的类。而When和Then语句将在Mockito jar中运行,说明Mockito jar的类在IntelliJ中调试时引发了Nullpointer异常。所以,更好的解决方案是,在调试时,在记录器中写入您希望看到的所有对象。
when(someDependency.getSomeInt(anyString())).thenReturn(Optional.of(111));