单元测试的意义在这里就不多说了;本文将示范如何在Go语言环境下使用go test进行简单的单元测试。

先看一段代码:

package package1
 
//MyFunc1 相减两个数
func MyFunc1(a, b int) int {
return a - b
}

package1 为自定义的包名称 ,而MyFunc1为自定义的函数,其作用为对两个传入的数进行减法操作。函数的功能非常简单,如果传入的值在有效范围(int类型,且数值有效),就不会发生错误。

先不管这函数多简单,假设其非常复杂,我们需要对其进行测试,保证其总能给我们正确的结果。

使用go test工具进行测试

将上面的代码保存为 myPackage.go 文件,并存放在 myPackage目录下。假设定义的主模块名称为myGo,那么这个模块的用法为:

package main
 
import (
"fmt"
package1 "myGo/myPackage"
)
 
func main() {
 
fmt.Println(package1.MyFunc1(2, 1))
 
}

那么怎么对这个单元进行测试呢?

回到myPackage目录,创建一个新的文件,myPackage_test.go

写入以下内容:

package package1
 
import "testing"
 
func TestMypackage1(t *testing.T) {
value := MyFunc1(1, 1)
if value != 0 {
t.Error("MyFunc1() 失败. 返回值为 ", value, "正确的值应为 0")
}
}

go test工具会自动运行_test.go这类文件中以Test开头的函数。注意,该函数的命名格式为Test+第一个字母必须为大写的名称。

以本文为例,输入命令:

go test myGo/myPackage

注意这里的myGo/myPackage,myGo并不是目录名,而是主模块名,在go.mod中定义:

//go.mod
module myGo