Trung BìnhGolang iconGolang

t.Helper() trong Go testing dùng để làm gì?

t.Helper() đánh dấu function hiện tại là helper function.

Khi test fail, Go runtime báo lỗi tại caller của helper (không phải bên trong helper), giúp dễ đọc output test hơn.

go
// Không có t.Helper() — lỗi báo tại dòng trong assertEq
func assertEq(t *testing.T, got, want int) {
    if got != want {
        t.Errorf("got %d, want %d", got, want) // line X in assertEq
    }
}

// Có t.Helper() — lỗi báo tại nơi gọi assertEq
func assertEq(t *testing.T, got, want int) {
    t.Helper() // <-- thêm dòng này
    if got != want {
        t.Errorf("got %d, want %d", got, want) // báo tại TestXxx line Y
    }
}

// Pattern dùng trong test suite
func TestCalc(t *testing.T) {
    assertEq(t, Add(2, 3), 5)   // khi fail → báo dòng này
    assertEq(t, Add(-1, 1), 0)  // khi fail → báo dòng này
}

Khi nào dùng: bất kỳ helper function nào nhận testing.T hoặc testing.B đều nên gọi t.Helper() ở dòng đầu tiên.

Đây là best practice idiomatic Go.

Xem toàn bộ Golang cùng filter theo level & chủ đề con.

Mở danh sách Golang