单元测试

函数参数

​ 必须是*testing.T,可以用其来记录错误或测试状态。

T结构体

T结构体是传递给Test函数以管理测试状态并支持格式化测试日志的类型。

​ 当Test函数返回或调用任何FailNow方法、Fatal方法、Fatalf方法、SkipNow方法、Skip方法或Skipf方法时,测试结束。这些方法以及Parallel方法只能从运行Test函数的goroutine中调用。即这些方法(7个方法)不能用以下方式调用:

1
2
3
4
5
6
7
import "testing"

func TestExample(t *testing.T) {
    go func() {
        t.Fatal("Test failed")  // 错误!不能在另一个 goroutine 中调用
    }()    
}

​ GoLand会有如下提示:

image-20231211174815055

​ 其他报告方法,如Log方法和Error方法的变体(4个方法),可以同时从多个goroutine调用。即这些方法可以用以下方式调用:

1
2
3
4
5
6
7
8
import "testing"

func TestExample(t *testing.T) {
    go func() {
        t.Error("Test failed")  // 正确,可以在另一个 goroutine 中调用
    }()
    // 这里的代码会执行
}

​ 关于T结构体的详情,请参阅type T

最后修改 October 10, 2024: 更新 (a4b8f85)