PHpullh
학습 라이브러리/Go/테스트 헬퍼

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 메타데이터를 가집니다.