PowerMock單元測試案例

2021-10-24 08:51:08 字數 1923 閱讀 1428

引入如下的mock jar包:

org.mockito

mockito-core

2.23.0

test

org.powermock

powermock-module-junit4

2.0.0-rc.3

test

org.powermock

powermock-api-mockito2

2.0.0-rc.3

test

junit

junit

4.11

test

普通mock: mock引數傳遞的物件

// 測試類

public class flysundemo

}public class flysunmocktest

}注:普通mock不需要加@runwith和@preparefortest註解。

mock方法內部new出來的物件

// 測試**

public class flysundemo

}@runwith(powermockrunner.class)

@preparefortest(flysundemo.class)

public class flysunmocktest catch (exception e) }}

注:當使用powermockito.whennew方法時,必須加註解@preparefortest和@runwith。註解@preparefortest裡寫的類是需要mock的new物件**所在的類。

mock普通物件的final方法

//測試**

public class classdependency

}public class flysundemo

}@runwith(powermockrunner.class)

@preparefortest(classdependency.class)

public class flysunmocktest

}注: 當需要mock final方法的時候,必須加註解@preparefortest和@runwith。註解@preparefortest裡寫的類是final方法所在的類。

mock普通類的靜態方法

// 測試**

public class classdependency

}public class flysundemo

}@runwith(powermockrunner.class)

@preparefortest(classdependency.class)

public class flysunmocktest

}注:當需要mock靜態方法的時候,必須加註解@preparefortest和@runwith。註解@preparefortest裡寫的類是靜態方法所在的類。

mock 私有方法

// 測試**

public class flysundemo

private boolean isalive()
@runwith(powermockrunner.class)

@preparefortest(flysundemo.class)

public class flysunmocktest

}注:註解裡寫的類是私有方法所在的類。

mock系統類的靜態和final方法 :

// 測試**

public class flysundemo

}@runwith(powermockrunner.class)

@preparefortest(flysundemo.class)

public class flysunmocktest

}注:和mock普通物件的靜態方法、final方法一樣

單元測試中PowerMock常用方法

在進行單元測試時,為了測試乙個簡單的方法,往往需要構造一堆複雜的相當物件,還有的情況是有的方法沒有返回值,直接在函式內做了某些事情,這時如果用黑盒測試,你無法通過輸入輸出判斷方法是否正確。所以,通常都會通過mock物件的方法來進行unit test.有機會再總結軟體測試一些理論知識,今天先把這幾天寫...

單元測試案例模板

專案組裡面突然說,開發人員要進行單元測試,並且要編寫單元測試報告,然後才能放到測試環境,讓測試去進行內部測試,否則連測試環境都不能上,作為一名開發,對自己開發的功能進行單元測試是十分有必要的。千萬不要以為測試就全是測試人員的工作,特別是自己開發的功能必須要自己測試過很多次之後,在讓測試人員來測試,不...

unittest單元測試案例 一

實現登陸功能的單元測試 驗證引數有效性函式 def login check username,password param username 登陸使用者名稱 param password 登陸密碼 return if 6 len password 18 if username admin and p...