创建一个采用Java参数的模拟对象

我希望创建一个cls类的Mockito模拟对象:

public class cls{
private var;

cls(String x){
var = x;
}

}

这是我的代码:

cls obj = mock(cls.class)

obj创建成功,但是var为null,因为没有参数传递给构造函数.此外,我无法使用powermockito.
创建模拟对象时如何将参数传递给cls的构造函数?

解决方法:

var是私有的.这是一个实现细节. Mockito的全部要点是,您希望避免现有实现的任何方面,而将其替换为一个对象,该对象尽管具有完全伪造的实现,但实际上与被测类进行交互.

在后台,Mockito使用Objenesis或ByteBuddy创建对象而无需调用构造函数.因此,在任何情况下,创建模拟都不会具有现实的构造函数.我建议改用任何使用var的方法.

另一方面,如果要选择性地存根或验证其中一些方法但具有实际字段,则可以始终创建间谍:

cls obj = spy(new cls(100));

因为您正在调用一个真正的构造函数,所以将现实地设置类的字段,然后将其复制到要调用obj的新对象中.

上一篇:java-如何“拦截”测试的方法调用?


下一篇:java-模拟休眠会话