我希望能够在 Mockito Spy 对象上单步调试调试器,特别是 Eclipse。举个例子,假设我有下面要测试的课程:
public class someClass(){
public someMethod(){
System.out.println("Begin someMethod call");
//some code in the method
System.out.println("End someMethod call");
}
}
假设我有一个 Mockito 类,如下所示:
@RunWith(MockitoJUnitRunnerclass)
public class SomeMethodTest {
@Spy SomeClass someSpiedObject;
@Test
public final void testSomeMethod(){
//some code in the test method
someSpiedObject.someMethod();
/some tests
}
我遇到的问题是,如果我在//测试方法中的一些代码和//方法中的一些代码设置调试断点,将到达第一个断点,但第二个不是。我知道代码会运行,但是系统输出会打印到控制台。我知道,作为一个间谍对象,它不是相同的代码,调试器不应该工作。我还知道,如果它是 Mock 对象而不是 Spy,则可以使用 VerboseLogging()。我真正的问题是,如何像对待普通对象一样单步执行代码?是否有可以提供帮助的调试框架? Mockito 有什么我不知道的功能吗?我最终将不再需要它作为 Spy 对象,并且可以简单地测试它,但直到静态调用被重构为止。
我在 IntelliJ 上遇到了同样的问题。我只嘲笑我的测试服务中的一种方法。
我找到的唯一解决方案是在我的测试代码中放置一个断点,然后单步执行(F7)调试实际代码的真正方法。这很糟糕,但这是我迄今为止找到的唯一方法。
奇怪的行为,但这对我有用: