前言
jmockit是乙個超強大的ut mock工具, 與其他mock工具最大的特點是可以對final類, 靜態方法進行mock! 這是其他mock工具不可比的. 這也成為我們選它做ut的原因. 多種mock工具特色比較:
一 jmockit載入注意事項
1 由於jmockit用到了jdk1.5的instrument特性, 所以必需用1.5以上的jdk執行
2 如果junit版本是4.x, 需要4.8以上的版本, 而且在設定classpath時jmockit.jar的路徑要設定在junit.jar前. 這樣保證使用jmockit的runner載入junit
3 jmockit還自帶了ut覆蓋率統計工具, 將jmockit-coverage.jar的路徑加入classpath, 每次ut完成就會自動生成覆蓋率報告, 方便省心.
二 jmockit實用技巧之mockup類應用
jmockit提供了多種mock方式共開發者使用, 但給我感覺最有用的乙個類就是mockup. 用它幾乎能完成所有需要mock的操作:
a) mock介面. 使用mockup.getmockinstance()方便mock介面, 特別是定義了多個方法的介面. 手工打樁需要寫乙個此介面的假實現, 但測試中只呼叫了介面的乙個方法, 造成了其他沒呼叫方法還要寫一堆沒用的實現. 用了mockup打樁就只關注需要mock的方法即可:
package demo.jmockit;
public inte***ce iservice
介面中有兩個方法, 使用mock返回乙個mock物件時只關注被呼叫的方法dosth()即可:
package demo.jmockit;
import mockit.mock;
import mockit.mockup;
import mockit.mockit;
import org.junit.test;
public class testcase
}.getmockinstance();
// 呼叫mock方法
service.dosth();
// 最後做還原動作, 確保用例之間不相互影響. 也可以放到test case的teardown方法中
mockit.teardownmocks();
} }
b) mock final類或靜態方法. 對於final類或靜態方法, 其他mock工具基本沒有好的辦法, 但用mockup就非常簡單:
package demo.jmockit;
public class utils
} package demo.jmockit;
import mockit.mock;
import mockit.mockup;
import mockit.mockit;
import org.junit.after;
import org.junit.test;
public class testcase
}; // 列印mock後返回值
system.out.println(utils.getformatstr());
} @after
public void teardown()
}
jmokit 靜態方法
前言 jmockit是乙個超強大的ut mock工具,與其他mock工具最大的特點是可以對final類,靜態方法進行mock 這是其他mock工具不可比的.這也成為我們選它做ut的原因.多種mock工具特色比較 一 jmockit載入注意事項 1 由於jmockit用到了jdk1.5的instrum...
靜態方法和靜態構造方法
如你所知,合理運用靜態欄位和靜態方法能夠提公升應用程式的效能,下面我們再複習一下類中的靜態成員 字段 方法 本文將涉及到靜態 構造方法等概念ok,我們先動手然後再剖析 新建乙個類test.cs public class test 用csc編譯一下 csc t library test.cs ok,讓...
靜態方法和非靜態方法
首先,兩者本質上的區別是 靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。而非靜態方法是不加static關鍵字的方法,在類定義時沒有占用記憶體,只有在類被例項化成物件時,物件呼叫該方法才被分配記憶體。其次,靜態方法中只能呼叫靜態成員或者方法,不能呼叫非靜態方法或者非靜態成...