无法在Eclipse中调试Mockito/JUnit代码,只需使用JUnit就可以正常工作

Alb*_*ong 9 java eclipse debugging mockito

我有JUnit测试,运行得很好.在我的构建中添加了Mockito,我尝试在我的JUnit测试中添加一个断点,该测试使用Mockito来模拟一些公共方法.当我尝试在类上运行调试器时,我收到错误"由于缺少行号属性而无法在XXX中安装断点.修改编译器选项以生成行号属性." 我检查了我的编译器并选择了生成行号.

cle*_*erz 7

您看到的异常是由于尝试调试由mock()函数创建的动态生成的空模拟方法引起的。从您的问题来看,您似乎实际上想要使用部分模拟而不是完整模拟,其中只有一些方法被模拟,其余调用被委托给实际实现。

要创建部分模拟,您应该使用spy()方法而不是mock()方法。所以,使用

MyClass myMock = spy(new MyClass());
Run Code Online (Sandbox Code Playgroud)

代替

 MyClass myMock = mock(MyClass.class);
Run Code Online (Sandbox Code Playgroud)


Mik*_*zak 0

如果仅在使用 Mockito 时发生,那么可能是因为 Mockito 是在没有调试器支持的情况下编译的?

另外,请检查测试类的编译器设置是否与常规代码相同。