[英]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.