jmokit 靜態方法

2021-08-26 19:57:47 字數 1603 閱讀 8935

前言

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