GO · 테스트
testing 패키지 & 테이블 드리븐 테스트
Go 내장 테스트 프레임워크로 표 기반 테스트를 작성합니다.
테스트중급testingtable-drivent.RunbenchmarkExample
핵심 설명
Go 내장 테스트 프레임워크로 표 기반 테스트를 작성합니다.
Go code
// calculator_test.go
package main
import (
"testing"
)
func Add(a, b int) int { return a + b }
func Divide(a, b float64) (float64, error) {
if b == 0 { return 0, fmt.Errorf("division by zero") }
return a / b, nil
}
// 기본 테스트
func TestAdd(t *testing.T) {
got := Add(2, 3)
want := 5
if got != want {
t.Errorf("Add(2,3) = %d; want %d", got, want)
}
}
// 테이블 드리븐 테스트 (Go 관용구)
func TestAddTable(t *testing.T) {
tests := []struct {
name string
a, b int
want int
}{
{"양수+양수", 2, 3, 5},
{"음수포함", -1, 1, 0},
{"둘다음수", -3, -2, -5},
{"영포함", 0, 5, 5},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Add(tt.a, tt.b)
if got != tt.want {
t.Errorf("Add(%d,%d) = %d; want %d",
tt.a, tt.b, got, tt.want)
}
})
}
}
// 벤치마크
func BenchmarkAdd(b *testing.B) {
for i := 0; i < b.N; i++ {
Add(100, 200)
}
}
// 예제 함수 (문서화 + 테스트)
func ExampleAdd() {
fmt.Println(Add(1, 2))
// Output: 3
}
// go test ./... — 테스트 실행
// go test -v ./... — 상세 출력
// go test -run Table — 특정 테스트만
// go test -bench=. — 벤치마크 실행
// go test -cover ./... — 커버리지학습 팁
t.Run()으로 서브테스트를 만들면 go test -run TestAddTable/양수처럼 특정 케이스만 실행할 수 있습니다.
주의할 점
t.Error()는 테스트를 계속 실행하고, t.Fatal()은 즉시 중단합니다. 이후 로직이 nil 포인터에 의존할 때는 t.Fatal()을 사용하세요.
자주 묻는 질문
testing 패키지 & 테이블 드리븐 테스트란 무엇인가요?
Go 내장 테스트 프레임워크로 표 기반 테스트를 작성합니다.
testing 패키지 & 테이블 드리븐 테스트 학습 시 주의할 점은 무엇인가요?
t.Error() 는 테스트를 계속 실행하고, t.Fatal() 은 즉시 중단합니다. 이후 로직이 nil 포인터에 의존할 때는 t.Fatal() 을 사용하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.