테이블 기반 테스트
하위 테스트를 사용한 매개변수화 테스트
테이블 기반 테스트은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
표 기반 테스트란 무엇입니까?
표 기반 테스트는 테스트 사례의 슬라이스(입력값과 예상 출력값)를 정의하고 하나의 테스트 본문으로 반복 처리합니다. 중복을 줄이고 사례를 쉽게 추가할 수 있습니다.
기본 패턴
각 사례에 사용할 구조체를 정의하고 t.Run으로 반복 처리한 다음 사례 이름과 함께 실패를 보고합니다:
tests := []struct {
name string
input int
want int
}{
{"zero", 0, 0},
{"positive", 3, 9},
{"negative", -2, 4},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := Square(tt.input)
if got != tt.want {
t.Errorf("Square(%d) = %d; want %d", tt.input, got, tt.want)
}
})
}익명 구조체 슬라이스
테스트 사례 형식에 익명 구조체를 사용하십시오. 사례 정의를 테스트 가까이에 둘 수 있고 한 번만 사용하는 형식에 이름을 붙이지 않아도 됩니다.
오류 사례 포함하기
예상한 상황에서 함수가 오류를 반환하는지 테스트하려면 wantErr bool 필드를 추가하십시오:
{"invalid input", -1, 0, true},
// in the loop:
if (err != nil) != tt.wantErr {
t.Errorf("wantErr %v, got err %v", tt.wantErr, err)
}하위 테스트 이름 지정하기
설명적인 이름 필드를 사용하면 실패 원인을 쉽게 이해할 수 있습니다. -run TestFunc/case_name으로 특정 사례를 실행할 수 있습니다.
t.Run 병렬 하위 테스트
각 하위 테스트를 병렬로 표시하고 반복 변수를 캡처하여 사례를 동시에 실행하십시오. 테스트가 입출력 대기 시간이 긴 경우 특히 중요합니다.
for _, tt := range tests {
tt := tt // capture
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
// ...
})
}사례별 공유 설정
tt.setup 함수 필드를 사용하면 상용구 코드를 중복하지 않고 사례별 설정을 수행할 수 있습니다:
type tc struct {
setup func() *DB
input string
want int
}사례를 읽기 쉽게 유지하기
사례가 커지면 이름이 있는 변수로 정의하거나 테스트 데이터 파일에서 불러오십시오. 표를 간결하게 유지하고 가능하면 사례 하나를 한 줄에 작성하십시오.
여러 출력 테스트하기
출력마다 필드를 하나씩 추가하여 여러 값을 반환하는 함수를 표 형식으로 테스트합니다:
type tc struct {
input string
wantVal int
wantErr bool
}표에서 testify/assert 사용하기
표 테스트 안에서 github.com/stretchr/testify/assert를 사용하면 장황한 if/t.Errorf 블록 없이 읽기 쉬운 검사를 작성할 수 있습니다.
assert.Equal(t, tt.want, got, tt.name)사례를 사용한 문서화
사례 표는 살아 있는 문서 역할을 합니다. 향후 개발자는 이 표를 읽고 지원되는 모든 입력값과 경계 사례를 한눈에 파악할 수 있습니다.
빠른 확인
표 기반 테스트에서 t.Parallel 전에 반복 변수를 캡처하는 이유는 무엇입니까(tt := tt)?
복습: 표 기반 테스트
핵심 내용:
- 입력값, 예상 출력값, 오류 플래그를 포함하는 구조체 슬라이스
- t.Run으로 이름이 있고 독립적인 하위 테스트를 반복 실행
- t.Parallel 전에 반복 변수 캡처(tt := tt)
- 사례는 지원되는 동작을 보여 주는 살아 있는 문서 역할을 함
자주 묻는 질문
“테이블 기반 테스트” 강의는 무료인가요?
네 — “테이블 기반 테스트” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“테이블 기반 테스트”에서 뭘 배우나요?
하위 테스트를 사용한 매개변수화 테스트 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“테이블 기반 테스트” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.