PHpullh
학습 라이브러리/Go/테이블 기반 테스트

GO · 테스트

테이블 기반 테스트

Go의 핵심 테스트 패턴. 테스트 케이스를 테이블로 정의하여 반복적인 코드를 줄입니다.

테스트중급table-testtestingsubtesttdd

핵심 설명

Go의 핵심 테스트 패턴. 테스트 케이스를 테이블로 정의하여 반복적인 코드를 줄입니다.

Go code

package main

import (
	"fmt"
	"testing"
)

func Add(a, b int) int { return a + b }

func TestAdd(t *testing.T) {
	tests := []struct {
		name     string
		a, b     int
		expected int
	}{
		{"양수 덧셈", 2, 3, 5},
		{"음수 포함", -1, 5, 4},
		{"제로", 0, 0, 0},
		{"큰 수", 1000000, 1, 1000001},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			got := Add(tt.a, tt.b)
			if got != tt.expected {
				t.Errorf("Add(%d, %d) = %d, want %d",
					tt.a, tt.b, got, tt.expected)
			}
		})
	}
}

func main() {
	// go test -v -run TestAdd
	fmt.Println("테이블 기반 테스트: go test -v")
}

학습 팁

테이블 기반 테스트에 t.Run을 사용하면 각 케이스가 서브테스트로 실행되어 실패 시 어떤 케이스인지 명확히 알 수 있습니다.

주의할 점

테스트 함수 이름은 반드시 Test로 시작해야 합니다. 소문자로 시작하면 테스트 러너가 인식하지 못합니다.

자주 묻는 질문

테이블 기반 테스트란 무엇인가요?

Go의 핵심 테스트 패턴. 테스트 케이스를 테이블로 정의하여 반복적인 코드를 줄입니다.

테이블 기반 테스트 학습 시 주의할 점은 무엇인가요?

테스트 함수 이름은 반드시 Test 로 시작해야 합니다. 소문자로 시작하면 테스트 러너가 인식하지 못합니다.