jmokit 靜態方法

2021-06-14 22:14:49 字數 1649 閱讀 2335

前言 

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關鍵字的方法,在類定義時沒有占用記憶體,只有在類被例項化成物件時,物件呼叫該方法才被分配記憶體。其次,靜態方法中只能呼叫靜態成員或者方法,不能呼叫非靜態方法或者非靜態成...