Mockito單元測試的學習

2021-10-07 16:32:19 字數 638 閱讀 2385

剛換到另乙個專案組,今天讓用mockito寫單元測試,之前從來沒有接觸過,由於別人不能看到公司內部**,只能找公司同事,但是幾乎問了所有認識的同事,他們都不會,只能自己硬著頭皮啃了,幸虧是在家辦公,可以用自己電腦查資料

1、在要被測試的物件上面加上@injectmocks註解,它所依賴的物件上面加@mock註解

更詳細的參考

2、公司的單元測試的方法裡面這種語句特別多

mockito.when(...).thenreturn(...);
它的作用是把要測試的方法依賴的東西給「化解掉」

舉個例子:

假如單元測試要測的是a方法,a方法依賴其他類的b方法,那我們就需要把b mock一下

3、單元測試裡面mock的物件在實際注入時需要有set方法,而且set方法上面需要有@autowird標籤

4、遇到的乙個大坑是單元測試mockito.when(...).thenreturn(...);語句裡面方法的引數需要和實際呼叫時的引數精確等於,即引數都需要重新equals方法,由於我遇到的引數是jar包裡面已經封裝好的,故採用了另乙個解決辦法:單元測試裡面哪個語句出現nullpointer異常,就把那個方法的引數全改為argumentmatchers.any(),最後問題結局了

可參考:

單元測試高階 使用 Mockito 進行測試

官方文件傳送門 mockito 官網 先來談談為什麼要用 mockito 如果某介面的功能是 根據一定邏輯往資料庫裡新增一條記錄的使用者註冊,那麼這個操作可以是認為有 的,除非你使用該介面後又進行回滾。rollback transactional顯然 spring 框架提供的上述註解可以很好的完成這...

提公升單元測試體驗的利器 Mockito使用總結

在編寫單元測試的時候,為了盡可能的保證隔離性,我們時常需要對某些不容易構造或者不容易獲取或者對外部環境有依賴的物件,用乙個虛擬的物件來建立以便於測試.假設你正在開發的的 中使用到了公司其他部門的介面 通過rpc服務 當編寫單元測試的時候你可能為了不讓介面真的去呼叫rpc服務而mock乙個介面的物件,...

提公升單元測試體驗的利器 Mockito使用總結

在編寫單元測試的時候,為了盡可能的保證隔離性,我們時常需要對某些不容易構造或者不容易獲取或者對外部環境有依賴的物件,用乙個虛擬的物件來建立以便於測試.假設你正在開發的的 中使用到了公司其他部門的介面 通過rpc服務 當編寫單元測試的時候你可能為了不讓介面真的去呼叫rpc服務而mock乙個介面的物件,...