![](/img/trans.png)
[英]How to mock a static final variable using JUnit, EasyMock or PowerMock
[英]How to test static void functions using Powermock easyMock?
我有一个返回void的静态函数。
此函数执行一些操作并在内部填充地图。
像这样
public static void doSomething(arg1,arg2,arg3) {
//Do some processing with the input parameters
if(arg1 satisfies given condition) {
//Create object
Conn conn = new Conn()
Map<String, List<String>> map = new Map();
//Populate the map with the processed value
conn.setAttributes(map);
}
}
现在,我要测试是否满足条件,即是否用期望值填充“ conn”对象中的“ map”? 需要帮助。
这里的问题是隐藏的依赖关系 ,即Conn
对象的实例化。
根据经验, 业务代码不应该负责获取必须与之通信的依赖关系。
您有两种解决方案:
屈服于
不良的设计,并使用
Powermock
注入Conn
模拟。
改进您的设计并使用依赖项注入/控制反转 。
这是可以做到通过简单地取代的内实例化Conn
与类型的附加参数对象Conn
。
但更好的方法是将您的static
方法转换为常规的非静态成员方法,并将Conn
的实例作为构造函数参数传递给private final
成员变量。
鉴于Conn
类不是final
您可以使用常规的模拟frmeworks创建Conn
模拟并在您的UnitTests中使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.