《PowerMock实战手册》读书笔记及个人总结
文章目錄
- 前言
- 依賴及注解
- mock local variable
- mock static
- mock final class / method
- mock constructors
- mock private methods
前言
注:本文總結源自汪文君的e-book 《PowerMock 實戰手冊》, pdf不知道為何導入不了,以下是隨書筆記。
pdf我保存在了百度云里,需要的可以自取
《PowerMock實戰手冊》
鏈接: 密碼: 6hm4
本文目的:通過強大的 mock 編寫出更好的測試用例,幫助實現 Free Bug
前提:具備 mockito 的語法基礎,如果不懂,請移步:
mockito官網文檔
mock 基本套路:
- 創建 mock 對象
- 模擬 mock 行為
- 調用待測試方法
- 驗證 mock 行為(確認 mock 部分被成功模擬)
github文檔
參考書籍:《Instant Mock Testing with PowerMock》
TDD框架我一般用Mockito,但是只要稍用一段時間就會發現它在實際項目中有很多解決不了的事情,因此出現了PowerMock,
專治各種不服【static / constructor / final / private / local variable】
補充:如果每次遇到這些代碼都選擇注釋,測起來非常麻煩,還是盡量能嵌入項目中,運用更強大的 mock,但實際項目中很可能還沒這么簡單嵌入,之后實際工作中總結了經驗再來補充。
另外,這些知識,看看就好,寫點 demo,真正用到的時候再完整的來兩遍,就會了,主要是會基本 demo,并且在工作測試的時候用到了能想到來這里查找和運用測試方法,讓測試更簡單。根據使用頻率,決定自己相關需要使用的技術需要熟練到什么程度即可,大可把它們當做參考手冊對待,不必牢記于心,網上用例一搜一大把。
依賴及注解
https://mvnrepository.com/
- powermock-module-junit4
- powermock-api-mockito
找到以上依賴(版本不一樣可能會出現意想不到的問題),引入到本地的 pom 文件中
以下兩個注解在測試 mockito 無法測試的內容時必須的,標注在待測試類上
@RunWith(PowerMockRunner.class)
告訴 junit 使用某個指定 Runner 運行 testCase ,不指定默認用 junit 的 Runner
@PrepareForTest(EmployeeService.class)
為 PowerMock 的 Runner 提前準備一個已經根據某種預期改變過的 class,如需添加更多,改成類似這種即可:@PrepareForTest({EmployeeService.class, EmployeeUtils.class})
mock local variable
- 有返回值
- 無返回值
只能用 mock 的 verify 判斷是否被調用
mock static
- 有返回值
- 無返回值
mock final class / method
同上
mock constructors
- 有參構造
whenNew(EmployeeDao.class).withArguments(false, MYSQL).thenReturn(employeeDao);
參數匹配器
包含請求和回答參數,還是參考這里
mockito官網文檔
PowerMockito.when(employeeService.xxx).then(new Answer() {
@override
public String answer(InvocationOnMock invocation) throws Throwable {
…分支
}
})
spy:只mock 一個對象的個別方法行為,保留對某些方法原始的業務邏輯
mock private methods
public class EmployeeService {private void checkExist(String userName) {throw new UnsupportedOperationException();} } PowerMockito.doNothing().when(employeeService, "checkExist", "wangwenjun");employeeService.checkExist("wangwenjun");PowerMockito.verifyPrivate(employeeService).invoke("checkExist","wan gwenjun");總結
以上是生活随笔為你收集整理的《PowerMock实战手册》读书笔记及个人总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动web开发适配rem
- 下一篇: win10背景色改成豆沙绿,解决锁屏后失