GO · 테스트
테스트 헬퍼
t.Helper()와 테스트 유틸리티로 반복적인 테스트 코드를 줄입니다.
테스트중급helpertestingfixturecleanup
핵심 설명
t.Helper()와 테스트 유틸리티로 반복적인 테스트 코드를 줄입니다.
Go code
package main
import (
"fmt"
"testing"
)
// 테스트 헬퍼
func assertEqual[T comparable](t *testing.T, got, want T) {
t.Helper() // 에러 위치를 호출자로 표시
if got != want {
t.Errorf("got %v, want %v", got, want)
}
}
func assertNoError(t *testing.T, err error) {
t.Helper()
if err != nil {
t.Fatalf("예상치 못한 에러: %v", err)
}
}
func assertError(t *testing.T, err error) {
t.Helper()
if err == nil {
t.Fatal("에러를 기대했지만 nil")
}
}
// 테스트 픽스처
func setupTest(t *testing.T) func() {
t.Helper()
fmt.Println("테스트 셋업")
// DB 연결, 임시 파일 생성 등
return func() {
fmt.Println("테스트 정리")
// 리소스 해제
}
}
func TestExample(t *testing.T) {
cleanup := setupTest(t)
defer cleanup()
// 또는 Go 1.14+: t.Cleanup(func() { ... })
assertEqual(t, 1+1, 2)
assertNoError(t, nil)
}
func main() {
fmt.Println("t.Helper()로 에러 위치를 정확히 표시")
}학습 팁
t.Cleanup(fn)은 Go 1.14+에서 사용 가능하며, 테스트 종료 시 자동으로 정리 함수를 실행합니다.
주의할 점
t.Helper()를 호출하지 않으면 에러 메시지가 헬퍼 함수 내부를 가리켜 디버깅이 어렵습니다.
자주 묻는 질문
테스트 헬퍼란 무엇인가요?
t.Helper() 와 테스트 유틸리티로 반복적인 테스트 코드를 줄입니다.
테스트 헬퍼 학습 시 주의할 점은 무엇인가요?
t.Helper() 를 호출하지 않으면 에러 메시지가 헬퍼 함수 내부를 가리켜 디버깅이 어렵습니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.