PHpullh
학습 라이브러리/Go/테스트 커버리지

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%가 목표가 아닙니다. 핵심 비즈니스 로직과 에러 처리 경로의 커버리지가 더 중요합니다.

Continue Learning

Go 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.