0Pricing
Go Academy · 강의

테이블 기반 테스트

하위 테스트를 사용한 매개변수화 테스트

테이블 기반 테스트은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. testing으로 단위 테스트 작성
  2. 테이블 기반 테스트
  3. 테스트 대역: 모의 객체와 스텁
  4. 테스트 커버리지와 testify
← Go Academy(으)로 돌아가기