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

2021-08-07 05:22:14 字數 1233 閱讀 3909

官方文件傳送門:mockito 官網

先來談談為什麼要用 mockito 。如果某介面的功能是:根據一定邏輯往資料庫裡新增一條記錄的使用者註冊,那麼這個操作可以是認為有***的,除非你使用該介面後又進行回滾。

@rollback

@transactional

顯然 spring 框架提供的上述註解可以很好的完成這樣的操作,但是如果當登入介面對註冊資訊有依賴的話,那麼直接回滾會帶來很多麻煩。

那麼有沒有既不影響其他模組的使用又不產生***的方法呢?那麼就該請出我們的 mockito 了。用最通俗的「人話」講,mockito 是乙個能生成假物件來配合測試用的工具。你可以給這個假物件設定一系列應答策略,例如:傳入 「請求值」的字串就 return「返回值」的結果。

另:mockito 可以很好地與 springboottest、junit……整合,下文樣例也是基於該環境

建立 mock 物件在 spring 環境下主要涉及下列兩個註解

@mock

// 被該註解標記的物件既是 mock 物件

@injectmocks

// 被該註解標記的物件既是 mock 物件,不同的是,若該物件內如果包含了被 @mock 標記的物件,那麼其內部的物件也會被替換成 mock 物件

提示下,下面涉及的方法主要出自這個包

import static org.mockito.bddmockito.*;

@before

public

void

init()

@before

public

void

init()

@before

public

void

init()

那麼所有沒宣告應答策略的方法 將正確執行,不會丟擲異常,返回值會預設為 null

在 三、配置 mock 物件應答策略 已完成的基礎上

@springboottest

@runwith(springrunner.class)

public

class

userservicetest

@test

public

void

test() throw exception

}

Mockito單元測試的學習

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

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

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

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

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