GO · 테스트
골든 파일 테스트
기대 출력을 파일로 저장하고 비교하는 골든 파일 테스트. 복잡한 출력 검증에 적합합니다.
테스트고급golden-filetestdatasnapshottesting
핵심 설명
기대 출력을 파일로 저장하고 비교하는 골든 파일 테스트. 복잡한 출력 검증에 적합합니다.
Go code
package main
import (
"flag"
"fmt"
"os"
"path/filepath"
"testing"
)
var update = flag.Bool("update", false, "골든 파일 업데이트")
func golden(t *testing.T, name string, actual []byte) {
t.Helper()
path := filepath.Join("testdata", name+".golden")
if *update {
os.MkdirAll("testdata", 0755)
os.WriteFile(path, actual, 0644)
return
}
expected, err := os.ReadFile(path)
if err != nil {
t.Fatalf("골든 파일 없음: %s (--update로 생성)", path)
}
if string(actual) != string(expected) {
t.Errorf("골든 파일 불일치:\n기대:\n%s\n실제:\n%s",
string(expected), string(actual))
}
}
func GenerateReport(name string) string {
return fmt.Sprintf("=== 보고서 ===\n이름: %s\n상태: 정상\n", name)
}
func TestReport(t *testing.T) {
actual := GenerateReport("테스트")
golden(t, "report", []byte(actual))
}
func main() {
fmt.Println("골든 파일 테스트:")
fmt.Println(" go test -run TestReport -update # 골든 파일 생성/업데이트")
fmt.Println(" go test -run TestReport # 비교 테스트")
}학습 팁
testdata/ 디렉토리는 Go 도구 체인이 특별 취급합니다. 빌드에서 제외되고 테스트 데이터 저장에 관례적으로 사용됩니다.
주의할 점
골든 파일을 업데이트할 때 변경 내용을 검토하지 않으면 버그가 있는 출력이 기대값이 됩니다. 항상 diff를 확인하세요.
자주 묻는 질문
골든 파일 테스트란 무엇인가요?
기대 출력을 파일로 저장하고 비교하는 골든 파일 테스트. 복잡한 출력 검증에 적합합니다.
골든 파일 테스트 학습 시 주의할 점은 무엇인가요?
골든 파일을 업데이트할 때 변경 내용을 검토하지 않으면 버그가 있는 출력이 기대값이 됩니다. 항상 diff를 확인하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.