GO · 테스트
테스트 커버리지
go test -cover로 코드 커버리지를 측정합니다. HTML 보고서로 미커버 영역을 확인합니다.
테스트중급coveragetestinghtml-reportquality
핵심 설명
go test -cover로 코드 커버리지를 측정합니다. HTML 보고서로 미커버 영역을 확인합니다.
Go code
package main
import (
"fmt"
"testing"
)
func Abs(n int) int {
if n < 0 { return -n }
return n
}
func Clamp(val, min, max int) int {
if val < min { return min }
if val > max { return max }
return val
}
func TestAbs(t *testing.T) {
tests := []struct{ input, want int }{
{-5, 5}, {5, 5}, {0, 0},
}
for _, tt := range tests {
if got := Abs(tt.input); got != tt.want {
t.Errorf("Abs(%d) = %d, want %d", tt.input, got, tt.want)
}
}
}
func TestClamp(t *testing.T) {
if Clamp(5, 0, 10) != 5 { t.Error("범위 내 실패") }
if Clamp(-5, 0, 10) != 0 { t.Error("하한 실패") }
if Clamp(15, 0, 10) != 10 { t.Error("상한 실패") }
}
func main() {
fmt.Println("커버리지 명령어:")
fmt.Println(" go test -cover # 커버리지 %")
fmt.Println(" go test -coverprofile=c.out # 프로파일 생성")
fmt.Println(" go tool cover -html=c.out # HTML 보고서")
fmt.Println(" go tool cover -func=c.out # 함수별 커버리지")
}학습 팁
go tool cover -html=c.out은 커버되지 않은 코드를 빨간색으로 표시합니다. 에지 케이스를 찾는 데 유용합니다.
주의할 점
커버리지 100%가 목표가 아닙니다. 핵심 비즈니스 로직과 에러 처리 경로의 커버리지가 더 중요합니다.
자주 묻는 질문
테스트 커버리지란 무엇인가요?
go test -cover 로 코드 커버리지를 측정합니다. HTML 보고서로 미커버 영역을 확인합니다.
테스트 커버리지 학습 시 주의할 점은 무엇인가요?
커버리지 100%가 목표가 아닙니다. 핵심 비즈니스 로직과 에러 처리 경로의 커버리지가 더 중요합니다.