Sne*_*ran 3 java testing jmockit
我是Mocking框架的新手.我现在正在研究的框架是JMockit.我有一个疑问.如果我对这个主题的理解很差,请原谅我.
我有一个扩展抽象类的A类.这个班是这样的:
class A extends AbstractClass{
private B b = UtilClass.getBean("b");
private C c = UtilClass.getBean("c");
.........
.........
.........
}
Run Code Online (Sandbox Code Playgroud)
UtilClass是这样的:
public final class UtilClass{
private static UtilContext context = new UtilContext();
//getBean method which returns a bean object
}
Run Code Online (Sandbox Code Playgroud)
我想模拟getBean方法.所以要模拟这个方法,我必须模拟UtilContext类.如果它正在实例化其他一些类,那么我也必须嘲笑它.这种方式我必须模拟很多类,这不是一个好主意.请帮我.
如果您只需要访问UtilClass中的getBean方法,则可以模拟整个UtilClass并使用该$clinit方法禁用其静态初始化(它不会禁用在编译时解析的静态初始化(常量)):
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();
...
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4543 次 |
| 最近记录: |