go test的使用【Go 学习笔记】|Go主题月

402 阅读1分钟

单元测试学习笔记:

  • 文件名的结尾要是以_test.go结尾,例如utils_test.go,这样go test才能成功实现。
  • 要在开头import testing。
import "testing"
  • 测试用例函数一定要用Test作为开头。例如func TestGetSum(t *testing.T)

  • 测试函数Test...()的参数是testing.T,我们可以使用该类型来记录错误或是测试状态,示例同上。

  • 测试格式:func TestAaaaaaaa(t *testing.T),Aaaaaaaa部分可以为任意字母和数字的组合,但是Aaaaaaaa的首字母不能是小写字母。例如func Testdiv(t *testing.T)是错误的函数名。

  • 函数中通过调用testing.T的一些方法来说明测试不通过,可以调用Log方法用来记录测试的信息。 👇👇👇

t.Errorf("期望%d,实际%d",55,sum)
t.FailNow()

要测试的函数 文件名单元测试.go

package 测试

func GetSum(n int) int {
	var sum = 0
	for i := 1;i<n+1;i++{
		sum += i
	}
	return sum
}

测试: 文件名:单元测试_test.go

package 测试

import "testing"

func TestGetSum(t *testing.T)  {
	sum := GetSum(10)
	if sum!=55{
		t.Errorf("期望%d,实际%d",55,sum)
		t.FailNow()
	}
	t.Log("TestGetSum测试成功!")
}

然后选择测试文件夹,右键,到run,选择 go test。

image.png

下面是测试结果:

image.png

其中,=== RUN TestGetSum是测试的函数。

单元测试_test.go:11: TestGetSum测试成功!是Log函数输出的结果:“TestGetSum测试成功”。 --- PASS: TestGetSum (0.00s) 是测试该函数用的时间,这里是0.00秒。

现在我们添加一个测试用例:

package 测试

import (
	"testing"
)

func TestGetSum(t *testing.T)  {
	sum := GetSum(10)
	if sum!=55{
		t.Errorf("期望%d,实际%d",55,sum)
		t.FailNow()
	}
	t.Log("TestGetSum测试成功!")
}
func TestGetSum2(t *testing.T) {
	sum := GetSum(5)
	if sum!=15{
		t.Fatal("这是一个致命错误!")

	}
	t.Log("测试成功!")
}

下面是测试结果:

image.png