单元测试 | 青训营笔记

79 阅读1分钟

testing包

在我们的GO项目中,需要对方法或代码包进行测试。 在项目的目录中除了代码源文件还要创建一个以"_test.go"结尾的测试文件

Go语言的标准库提供了一个名为"testing"的包,其中包含了一些用于编写单元测试的工具和函数。需要在测试文件中导入。

import "testing"

示例

以一个HelloTom函数为例

func HelloTom() string {
    return "Jerry"
}

在测试文件中,使用func TestXxx(*testing.T)的格式创建测试函数,其中"Xxx"是要测试的函数或方法的名称。测试函数的参数是一个*testing.T类型的对象,用于管理测试过程和报告测试结果。

func TestHelloTom(t *testing.T){
    output := HelloTom()
    expectOutput := "Tom"
    if output != expectOutput {
        t.Errorf("Expect %s do not match actual %s", expectOutput, output)
    }
}

在测试函数中,使用断言来验证代码的预期行为和结果。*testing.T对象提供了一些内置的断言函数,例如t.Errorft.Fatalft.Logf。你还可以使用reflect包来进行更复杂的比较和验证。

这里使用t.Errorf来验证输出的是否是"Tom"

在终端中运行go test命令来执行测试。Go将自动查找当前目录及其子目录中以"_test.go"结尾的文件,并运行其中的测试函数。

$ go test

运行测试后,你可以看到一份摘要报告,其中列出了测试的总数、通过的测试数和失败的测试数。

$ go test
--- FAIL: TestHelloTom (0.00s)
    HelloTom_test.go:9: Expect Tom do not match actual Jerry
FAIL
exit status 1
FAIL    testexample     1.111s