GoMock测试框架

一、GoMock简介 
1、GoMock简介
GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的testing包良好集成,也能用于其它的测试环境中。GoMock测试框架包含了GoMock包和mockgen工具两部分,其中GoMock包完成对桩对象生命周期的管理,mockgen工具用来生成interface对应的Mock类源文件。

GoMock官网:

GitHub - golang/mock: GoMock is a mocking framework for the Go programming language.

GoMock安装:

go get github.com/golang/mock/gomock
mockgen辅助代码生成工具安装:

go get github.com/golang/mock/mockgen
GoMock文档:

go doc github.com/golang/mock/gomock
2、mockgen使用
(1)mockgen工具选项

mockgen工具支持的选项如下:

-source: 指定接口的源文件

-destination: mock类代码的输出文件。如果没有设置本选项,代码将被输出到标准输出。-destination选项输入太长,因此推荐使用重定向符号>将输出到标准输出的内容重定向到某个文件,并且mock类代码的输出文件的路径必须是绝对路径。

-package: 指定mock类源文件的包名。如果没有设置本选项,则包名由mock_和输入文件的包名级联而成。

-aux_files: 附加文件列表用于解析嵌套定义在不同文件中的interface。指定元素列表以逗号分隔,元素形式为foo=bar/baz.go,其中bar/baz.go是源文件,foo是-source选项指定的源文件用到的包名。

-build_flags: 传递给build工具的参数

-imports: 依赖的需要import的包

-mock_names:自定义生成mock文件的列表,使用逗号分割。如Repository=MockSensorRepository,Endpoint=MockSensorEndpoint。

Repository、Endpoint为接口,MockSensorRepository,MockSensorEndpoint为相应的mock文件。

(2)mockgen工作模式

mockgen有两种操作模式:源文件模式和反射模式。

源文件模式通过一个包含interface定义的源文件生成mock类文件,通过-source标识开启,-imports和-aux_files标识在源文件模式下是有用的。mockgen源文件模式的命令格式如下:

mockgen -source=xxxx.go [other options]
反射模式通过构建一个程序用反射理解接口生成一个mock类文件,通过两个非标志参数开启:导入路径和用逗号分隔的符号列表(多个interface)。

mockgen反射模式的命令格式如下:

mockgen packagepath Interface1,Interface2...
第一个参数是基于GOPATH的相对路径,第二个参数可以为多个interface,并且interface之间只能用逗号分隔,不能有空格。

(3)mockgen工作模式适用场景

mockgen工作模式适用场景如下:

A、对于简单场景,只需使用-source选项。

B、对于复杂场景,如一个源文件定义了多个interface而只想对部分interface进行mock,或者interface存在嵌套,则需要使用反射模式
————————————————
版权声明:本文为CSDN博主「天山老妖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/A642960662/article/details/123142514

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值