GO · 테스트
병렬 테스트
t.Parallel()로 테스트를 병렬 실행하여 테스트 시간을 단축합니다.
테스트중급paralleltestingperformanceconcurrent
핵심 설명
t.Parallel()로 테스트를 병렬 실행하여 테스트 시간을 단축합니다.
Go code
package main
import (
"fmt"
"testing"
"time"
)
func TestParallel(t *testing.T) {
tests := []struct {
name string
duration time.Duration
}{
{"빠른 테스트", 100 * time.Millisecond},
{"중간 테스트", 200 * time.Millisecond},
{"느린 테스트", 300 * time.Millisecond},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel() // 병렬 실행 선언
// 독립적인 테스트 로직
time.Sleep(tt.duration)
// 순차: 600ms, 병렬: ~300ms
})
}
}
// 병렬 테스트에서 공유 리소스
func TestParallelWithSetup(t *testing.T) {
// 셋업은 직렬로
// db := setupTestDB(t)
t.Run("group", func(t *testing.T) {
t.Run("test1", func(t *testing.T) {
t.Parallel()
// db 사용 (읽기만)
})
t.Run("test2", func(t *testing.T) {
t.Parallel()
// db 사용 (읽기만)
})
})
// 모든 병렬 서브테스트 완료 후 정리
}
func main() {
fmt.Println("병렬 테스트: go test -v -parallel 4")
}학습 팁
-parallel N 플래그로 최대 병렬 수를 제어합니다. 기본값은 GOMAXPROCS입니다.
주의할 점
병렬 테스트에서 공유 상태를 변경하면 레이스 컨디션이 발생합니다. 각 테스트는 독립적인 데이터를 사용하세요.
자주 묻는 질문
병렬 테스트란 무엇인가요?
t.Parallel() 로 테스트를 병렬 실행하여 테스트 시간을 단축합니다.
병렬 테스트 학습 시 주의할 점은 무엇인가요?
병렬 테스트에서 공유 상태를 변경하면 레이스 컨디션이 발생합니다. 각 테스트는 독립적인 데이터를 사용하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.