Jav*_*cky 29 java tdd static unit-testing easymock
假设我有一个这样的类:
public class StaticDude{
public static Object getGroove() {
// ... some complex logic which returns an object
};
}
Run Code Online (Sandbox Code Playgroud)
如何使用easy mock模拟静态方法调用?StaticDude.getGroove().
我正在使用easy mock 3.0
Ben*_*n J 25
不确定如何使用纯EasyMock,但考虑使用EasyMock 的PowerMock扩展.
它有很多很酷的功能可以满足您的需求 - https://github.com/jayway/powermock/wiki/MockStatic
ste*_*bot 11
Easymock是"for interfaces(以及通过类扩展的对象)"的测试框架,因此您可以在没有接口的情况下模拟类.考虑创建一个带有静态类访问器的接口对象,然后模拟该访问器.
编辑:顺便说一句,我不建议做静态类.如果您正在进行TDD,最好将所有接口都连接起来.
小智 9
以防万一PowerMock因任何原因无法使用:
您可以将静态调用移动到方法,在测试类中测试类的实例化中重写此方法,在测试类中创建本地接口并在覆盖方法中使用其方法:
private interface IMocker
{
boolean doSomething();
}
IMocker imocker = EasyMock.createMock(IMocker.class);
...
@Override
void doSomething()
{
imocker.doSomething();
}
...
EasyMock.expect(imocker.doSomething()).andReturn(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63763 次 |
| 最近记录: |