可能重复:
jmock 模拟静态方法
我正在研究使用 XX 类的静态方法的遗留单元测试。我现在更改了类以从 Spring 应用程序上下文中获取字段值。单元测试现在失败,因为无法初始化类 XX。
我不能用 dummysupport 类包装 XX 类,因为要测试的逻辑很复杂,而且对 XX 类的调用嵌套在对其他遗留类的多层调用中。所以我试图找到一种方法来模拟类 XX 中的静态方法。有没有办法做到这一点?我正在使用 Jmock 库。
可能重复:
jmock 模拟静态方法
我正在研究使用 XX 类的静态方法的遗留单元测试。我现在更改了类以从 Spring 应用程序上下文中获取字段值。单元测试现在失败,因为无法初始化类 XX。
我不能用 dummysupport 类包装 XX 类,因为要测试的逻辑很复杂,而且对 XX 类的调用嵌套在对其他遗留类的多层调用中。所以我试图找到一种方法来模拟类 XX 中的静态方法。有没有办法做到这一点?我正在使用 Jmock 库。
我过去也遇到过这个问题,并设法围绕它编写代码,因此我可以通过使方法为非静态但对类具有静态引用来使用 JMock。
例如
public ClassToMock {
public static final ClassToMock INSTANCE = new ClassToMock();
private ClasstToMock() {};
public void newNonStaticMethod1(){}
}
代替
public ClassToMock {
public ClasstToMock() {};
public void static origStaticMethod1(){}
}
现在您的方法调用将是
ClassToMock.INSTANCE.newNonStaticMethod1();
由于 newNonStaticMethod1() 不是静态的,您现在可以模拟它。
As the CalssToMock ctor is private it can only be accessed through the static instance.