Go 语言中自带有一个轻量级的测试框架 testing包自带的 go test 命令来实现单元测试和性能测试。

1.1.1. 一、testing包的测试规范。

go 语言的测试包testing,有几个规范。

1、测试文件要以 xxx_test.go 命名,也就是以下划线test结尾。

2、测试函数需要TestXxx 命名: func TestXxx(*testing.T),其中 Xxx 可以是任何字母数字字符串(但第一个字母不能是 [a-z]),用于识别测试用例。在这些函数中,使用 Error, Fail 或相关方法来发出失败信号。

在某文件夹下,运行 `go test` 命令。程序会自动加载所有的xxx_test.go文件,并且运行里面的func TestXxx(*testing.T) 类型的函数。

1.1、示例如下:

有一个源文件userService.go,和一个测试文件userService_test.go。

  • userService.go的内容:就是一个Add函数。
func Add(n1 int, n2 int) int {
    return n1 + n2
}
  • userService_test.go的内容:
import (
    "fmt"
    "testing"
)
//编写测试1
func TestAdd(t *testing.T)  {
    res := Add(34,21)
    if res != 55 {
        // 程序退出,并输出日志
        t.Fatalf("程序错误,期望值=%v,实际值=%v",55,res)
    }
    //输出日志
    t.Logf("执行正确。。")

}

//编写测试2
func TestHello(t *testing.T)  {
    fmt.Println("TestHello 被调用。。。")
}

有2个测试方法:TestAdd、TestHello。

  • 命令行运行测试。

在userService_test.go文件所在目录,执行 go test -v可以看到测试的结果如下:

$ go test -v
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
    userService_test.go:15: 执行正确。。
=== RUN   TestHello
TestHello 被调用。。。
--- PASS: TestHello (0.00s)
PASS
ok      testingDemo/testCase01  0.323s
  • 在IDEA中,可以点击下面箭头所示的小图标运行测试:

1.1.2. 二、细节说明:

1) 测试用例文件名必须以 _test.go 结尾。 比如 userService_test.go。

2) 测试用例函数必须以 Test 开头,一般来说就是 Test+被测试的函数名,比如: TestAdd。

3) TestAdd(t *tesing.T) 的形参类型必须是 *testing.T 【看文档】。

4) 一个测试用例文件中,可以有多个测试用例函数,比如 userService_test.go文件中中有TestAdd、TestHello。

5) 运行测试用例指令:

(1) cmd>go test [如果运行正确,无日志,错误时,会输出日志]

(2) cmd>go test -v [运行正确或是错误,都输出日志]

(3) 测试单个文件,需要把测试文件、原文件一起放在命令中。

例如:cmd>go test -v userService_test.go userService.go

不区分userService_test.go 和 userService.go的顺序。可以是:

cmd>go test -v userService.go userService_test.go

(4) 测试单个方法:

例如测试TestAdd方法:cmd>go test -v -test.run TestAdd

6) 当出现错误时,可以使用 t.Fatalf 来格式化输出错误信息,并退出程序。

7) t.Logf 方法可以输出相应的日志。

results matching ""

    No results matching ""