我在 JUnit 测试中使用 EasyMock 。我想模拟父类中存在的静态方法。例如:
Class A {
public void testOne() {
Map map = StaticClass.method();
// using map code here ...
}
}
Class B extends A {
public void testTwo(){
testOne();`
}
}
现在,我正在为类B
编写JUnit测试,我想在类StaticClass.method()
中模拟A
。
如何实现这个?
答案 0 :(得分:0)
我建议(按照我的偏好顺序):
PowerMock
选项1 - 具体实施:
public class StaticClassWrapper() {
public Map method() {
return StaticClass.method();
}
}
选项2 - 可测试类
public class A {
public void testOne() {
Map map = method();
}
protected Map method() {
return StaticClass.method();
}
}
在测试中,您需要创建TestableA
并在其上运行测试(而不是在A
上运行测试):
public class TestableA {
protected Map method() {
// return a mock here
}
}
您的上一个(也是最不喜欢的)选项是使用PowerMock
。它可以与EasyMock
一起使用以模拟静态调用。