java – 使用JMockit模拟类
作者:互联网
我是Mocking框架的新手.我现在正在研究的框架是JMockit.我有一个疑问.如果我对这个主题的理解很差,请原谅我.
我有一个扩展抽象类的A类.这个班是这样的:
class A extends AbstractClass{
private B b = UtilClass.getBean("b");
private C c = UtilClass.getBean("c");
.........
.........
.........
}
UtilClass是这样的:
public final class UtilClass{
private static UtilContext context = new UtilContext();
//getBean method which returns a bean object
}
我想模拟getBean方法.所以要模拟这个方法,我必须模拟UtilContext类.如果它正在实例化其他类,那么我也必须嘲笑它.这种方式我必须模拟很多类,这不是一个好主意.请帮我.
解决方法:
如果您只需要访问UtilClass中的getBean方法,则可以使用$clinit方法模拟整个UtilClass并禁用其静态初始化(它不会禁用在编译时解析的静态初始化(常量)):
new MockUp<UtilClass>() {
@Mock
void $clinit() {
//disable static initialization
}
@Mock
public static SomeType getBean(String s) {
if("b".equals(s)) return new B();
if("c".equals(s)) return new C();
...
}
};
标签:java,testing,jmockit 来源: https://codeday.me/bug/20190826/1727478.html