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));