Go语言打造:gotests测试文件生成器

发表时间: 2024-04-06 21:13

gotests 是编写Go测试的一个Golang命令行工具,可以根据目标源文件的函数和方法签名生成表驱动的测试。将自动导入测试文件中的任何新依赖项。

源码

https://github.com/cweill/gotests

安装

go install  github.com/cweill/gotests/...

作为开发工具插件使用

以下展示了使用官方Sublime Text 3插件进行的测试。Emacs、Vim、Atom Editor、Visual Studio Code和IntelliJ Goland也有插件。

gotests命令

通过命令行,gotests可以为特定的源文件或整个目录生成Go测试。默认情况下,它将输出打印到stdout。

$ gotests [options] PATH ...

参数

  -all                  generate tests for all functions and methods                        为所有函数和方法生成测试  -excl                 regexp. generate tests for functions and methods that don't                         match. Takes precedence over -only, -exported, and -all                        为没有匹配到的函数和方法生成测试,和only相反,优先于 -only, -exported, and -all  -exported             generate tests for exported functions and methods. Takes                         precedence over -only and -all                        为导出函数和方法生成测试,优先于-only and -all  -i                    print test inputs in error messages                        在错误消息中打印测试输入  -only                 regexp. generate tests for functions and methods that match only.                         Takes precedence over -all                        为匹配到的函数和方法生成测试,优先于-all  -nosubtests           disable subtest generation when >= Go 1.7                        禁用子测试生成。仅适用于Go 1.7+  -parallel             enable parallel subtest generation when >= Go 1.7.                        启动自测试生成,适用于Go 1.7+  -w                    write output to (test) files instead of stdout                        将输出(测试)写入文件而不是stdout  -template_dir         Path to a directory containing custom test code templates. Takes                         precedence over -template. This can also be set via environment                         variable GOTESTS_TEMPLATE_DIR                        包含自定义测试代码模板的目录的路径。优先于-template。这也可以通过环境进行设置                        变量GOTESTS_TEMPLATE_DIR  -template             Specify custom test code templates, e.g. testify. This can also                         be set via environment variable GOTESTS_TEMPLATE                        指定自定义测试代码模板,例如verify。这也可以                        通过环境变量GOTESTS_TEMPLATE设置  -template_params_file read external parameters to template by json with file  -template_params      read external parameters to template by json with stdin                        使用stdin通过json将外部参数读取到模板

命令

1、以文件名lib.go为例 ,生成lib.go文件中所有函数的测试

gotests -all lib/lib.go

进入lib目录,执行

gotests -all .

打印目录下所有函数和方法的测试

注意:生成内容是直接打印出来的

如果想将输出内容打印到指定文件,可执行

gotests -all -w lib/lib.go  lib/lib_test.go 

2、

根据正则匹配生成对应函数和方法的测试

gotests -only  "函数或方法名" lib/lib.go

3、 模版

gotests工具准备了一些模版放在,
https://github.com/cweill/gotests/tree/develop/templates,这里有比较重要的模版testify/function.tmpl。

通过模板生成测试文件命令:

gotests -i -template_dir 模板目录 -all -w  输出目录

4、goland下生成测试文件 windows环境下,goland在项目中, 打开一个文件后 ,alt+insert 弹出

根据需要选择即可生成。