单元测试的意义在这里就不多说了;本文将示范如何在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