Golang中如何使用go test进行单元测试

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

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/1492.html

分类: 计算机技术
推荐阅读:
Rust使用cfg来实现不同系统的条件编译 Rust使用cfg来实现不同系统的条件编译
Python iter()函数 在Python中,iter()函数用于获取一个可迭代对象的迭代器。
Golang中imported and not used:这类错误解决办法 在Golang中,比较容易碰到诸如 imported and not used: "time" 这样的错误;在这里表示你导入了一个time包却没有使用它;
C语言strcpy()函数:复制字符串 strcpy()函数会将源字符串中的内容复制到目标字符串中,直至遇到字符串终止符'\0';复制过程中,包括字符串终止符'\0'在内的所有字符都会被复制;
Python print()函数 print() 函数是 Python 内置函数之一,用于输出指定的对象。它可以接受多个参数,用逗号分隔,它们将被依次输出,并且默认情况下它们之间会用空格分隔。在输出完成之后,print() 函数会自动在末尾添加一个换行符。
Python setattr()函数 在 Python 中,setattr() 函数用于设置对象的属性值。它接受三个参数:要设置属性的对象、属性名称和属性值。如果对象已经存在具有相同名称的属性,则该属性的值将被覆盖。