golang单元测试之生成二进制测试文件

一、golang单元测试规范介绍:

    1、单元测试文件名称:*_test.go;

    2、单元测试文件中,函数的名称为:TestXXX,其中xxx必须以大写字母开头;

 

二、当执行go test命令进行单元测试时,*_test.go文件中要测试的函数没在该文件中定义,而是在其它源文件(.go文件)中定义的,需要把对应源文件也作为go test命令的参数,比如源码文件结构如下所示:

//源文件:project/sum.go

package sum

func Sum(num1, num2 int64) int64 {
	return num1+num2
}

// 单元测试文件:project/sum_test.go

package sum

import "testing"

func TestSum(t *testing.T) {
	t.Log(Sum(1,2))
}

虽然单元测试文件(sum_test.go)和被测试函数(Sum)在同一个包下,但是通过命令行go test来运行但云测试文件时,执行:

go test sum_test.go //会报"undefined: Sum"错误,即找不到Sum函数的定义

正确方式为:
go test sum_test.go sum.go  //(工作目录为project时)
或者
go test project //(工作目录为../project时)代码结构为project/sum.go、project/sum_test.go

三、单元测试文件编译为二进制可执行文件

命令行选项 含义描述
-c 生成用于运行测试的可执行文件,但不执行它。这个可执行文件会被命名为“pkg.test”,其中的“pkg”即为被测试代码包的导入路径的最后一个元素的名称。
-i 安装/重新安装运行测试所需的依赖包,但不编译和运行测试代码。
-o 指定用于运行测试的可执行文件的名称。追加该标记不会影响测试代码的运行,除非同时追加了标记-c-i
-v 输出详细的测试过程

 

// 命令
go test -c 源码文件 //默认会生成.test的可执行文件

// 如果想要完整的单元测试结果
go test -v -o xxx.test文件

参考:http://objcoding.com/2018/09/14/go-test/

你可能感兴趣的:(Go语言)