» Go语言快速入门 » 3. 高级篇 » 3.5 测试

测试

在 Go 中,测试是开发过程的一个有机组成部分。Go 语言配备了一个内置的测试框架,使得编写和运行测试很方便。

假设你有一个一个名为 calculator.go 的文件,其中有一个简单的函数用于将两个数字相加:

// calculator.go

package calculator

// Add 返回两个整数的和
func Add(a, b int) int {
    return a + b
}

现在,在同一目录下创建一个名为 calculator_test.go 的测试文件来测试 Add 函数:

// calculator_test.go

package calculator

import "testing"

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    expected := 5

    if result != expected {
        t.Errorf("Add(2, 3) = %d; expected %d", result, expected)
    }
}

测试函数必须在以 _test.go 结尾的文件中,并且函数名以 Test 开头。

运行测试使用 go test 命令:

go test

基准测试

基准测试是一种测量函数或代码片段性能的方法过程。

// calculator.go

package calculator

// Factorial 计算n的阶乘
func Factorial(n int) int {
    if n <= 1 {
        return 1
    }
    return n * Factorial(n-1)
}
// calculator_benchmark_test.go

package calculator

import (
	"testing"
)

func BenchmarkFactorial(b *testing.B) {
	for i := 0; i < b.N; i++ {
		Factorial(10)
	}
}

BenchmarkFactorial 是基准测试函数。b.N 次循环运行代码,以测量其性能。

要运行基准测试,使用 go test 命令和 -bench 标志:

go test -bench .

其输出包括每个迭代的执行时间以及每秒操作的数量。基准测试结果可以帮助开发者找出性能瓶颈,再设法优化解决。