我希望能够逐步通过调试器,特别是Eclipse,对Mockito Spy对象。举个例子,假设我有一个要测试的类:
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
}
我遇到的问题是,如果我在 //some code in the test method 和 //some code in the method 处设置调试断点,第一个断点会到达,但第二个断点不会。我知道代码是运行的,但是系统输出被打印到控制台。我知道,作为一个间谍对象,它不是相同的代码和调试器不应该工作。我还知道,如果VerboseLogging()是一个Mock对象,而不是Spy对象,则可以使用它。我的真实的问题是,如何像对待普通对象一样逐步遍历代码?有没有调试框架可以提供帮助?莫奇托有什么我不知道的特征吗我最终将不再需要它是一个间谍对象,可以简单地测试它,但直到静态调用被重构。
2条答案
按热度按时间46qrfjad1#
我在IntelliJ上遇到了同样的问题。我在测试中只模拟了我的服务中的一个方法。
我找到的唯一解决方案是在测试代码中放置一个断点,并使用Step-Into(F7)真实的方法来调试实际代码。这很糟糕,但这是我目前为止找到的唯一方法。
y3bcpkx12#
奇怪的行为,但这对我来说很有效:
1.清除所有间谍断点。
1.就在调用spy方法之前,在测试中设置断点。
1.启动JUnit调试器。
1.现在,当调试器运行并位于测试代码中的断点处时,在间谍代码中设置断点。
1.继续执行,您的间谍断点现在应该被识别。很奇怪,但不管怎样。工作(现在)祝你好运!