无法在 Eclipse 中调试 Mockito / JUnit 代码,仅使用 JUnit 即可正常工作

2022-09-04 03:46:56

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


答案 1

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

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

MyClass myMock = spy(new MyClass());

而不是

 MyClass myMock = mock(MyClass.class);

答案 2

尝试删除并重新添加断点,可能只是当前断点引用了类的旧版本。仅此而已!

也许Mockito小组中的这篇文章可以帮助你。