报告使用 context.WithCancel(context.Background()) 创建可取消上下文并立即推迟 cancel()的测试代码。

在 Go 1.24 及更高版本中,t.Context() 会返回一个在测试结束时自动取消的上下文。 这样一来,手动 WithCanceldefer cancel() 对就变得冗余。

示例:


func TestSomething(t *testing.T) {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()

	if err := work(ctx); err != nil {
		t.Fatal(err)
	}
}

要修正代码,请使用将 context.WithCancel 替换为 t.Context 快速修复。

在应用快速修复后:


func TestSomething(t *testing.T) {
	ctx := t.Context()

	if err := work(ctx); err != nil {
		t.Fatal(err)
	}
}