当一个类里有引用到其他的对象时,如果不是调用其静态的方法,我一般都是用EasyMock来mock对象,但是碰到静态方法时,大家如何写单元测试呢?
Check this out:
Powermock
http://code.google.com/p/powermock/
查了一下,EasyMock没有提供这个功能。
想了一种方法,可以试试看看:
主要是对每个静态函数用一个对象的方法进行包装
1 加入一个新接口:
public interface IStaticInterface {
public void s_method1();
public void s_method2();
// 有几个要测得静态方法就加几个
}
2 扩展要测得接口
例如要测的类的接口是INeededTest,那么
public class TestClass implement INeededTest, INeededTest {
@Override
public void s_method1() {
// 做静态方法一要做的事情
}
...
}
3 对TestClass建立EasyMock
另外,好像有一些开源的工具支持Mock static方法的,可以去看看源码实现。