使用gomock實現單元測試

2021-10-04 06:10:52 字數 2226 閱讀 6151

安裝獲取文件:go doc github.com/golang/mock/gomock

**生成包:go get github.com/golang/mock/mockgen

介面檔案

//定義介面檔案,如下。並實現介面

package demo

type demointer inte***ce

生成**

source: 指定介面檔案

destination: 生成的檔名

package:生成檔案的包名

imports: 依賴的需要import的包

aux_files:介面檔案不止乙個檔案時附加檔案

build_flags: 傳遞給build工具的引數

mockgen -destination=

./mock/mock_demo.

go--source=

./demo.go-

package

=mock_demo

使用mock

建立***_test.go檔案

建立測試方法:test***(t *testing.t) {}方法中使用mock:

a.建立控制器:c := gomock.newcontroller(t)

b.例項化mock:rs := mock_demo.new***(c)

c.設定對應方法的返回:rs.expect().demoaction().return(data, nil)

d.呼叫對應方法

e.判斷結果

分析mock生成的**

gomock.newcontroller(t):返回1個控制例項

newmock***(c):

//生成的mock型別

type mock*** struct

//這裡主要是例項化根據你之前定的介面而生成的mock型別

func

new***tool

(ctrl *gomock.controller)

*mock***

mock.recorder =

&mock***mockrecorder

return mock

}

3.ts.expect().demoaction().return(data, nil)

//expect() 返回允許呼叫方指示預期用途的物件 

func

(m *mock***tool)

expect()

*mock***mockrecorder

//demoaction() 這裡主要是模擬基礎方法,返回同你真正定義的方法

func

(m *mock***tool)

demoaction()

(***,

error

)//初始化模擬的方法

func

(mr *mock***mockrecorder)

demoaction()

*gomock.call

//return() 追加模擬的方法和模擬的引數和返回到 *call內

func

(c *call)

return

(rets ...

inte***ce

)*call

//迴圈判斷引數的型別是否和初始化的一致

for i, ret :=

range rets

else

if got ==

nil}

else

if got.

assignableto

(want)

else

}//將方法追加到模擬方法庫中

c.addaction

(func([

]inte***ce)[

]inte***ce

)return c

}

結尾

所以就是模擬你要測試的方法中的所需要到的其他方法。比如資料庫操作,rpc方法等。

一千個人眼中有一千個哈姆雷特,但是一定要多多研究和思考!加油!

Mockito JUnit實現單元測試

這種組合方式,可以理解為僅依賴的是junit和mockito,spring沒寫是因為關鍵註解的使用,並沒有用到 resource componentscan等,1 首先匯入包 junit junit 4.12 test org.mockito mockito all 1.10.19 test org...

Google Test單元測試使用

google開源了很多實用的模組,比如google gtest google gmock google glog google gflags google ctemplate google sparsehash protobuf perftools,gtest是c 的測試模組,提供豐富的測試方法 軟...

spring單元測試使用

開發過程中單元測試是必不可少的,下面就來說一下spring單元測試的使用。很簡單,乙個示例就很清楚了。以下為源 示例 package com.cinyi.user import org.junit.test import org.junit.runner.runwith import org.spr...