testing으로 단위 테스트 작성
TestXxx 함수, t.Error, t.Fatal 및 t.Helper
testing으로 단위 테스트 작성은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
테스트 패키지
Go에 내장된 testing 패키지는 단위 테스트에 필요한 모든 기능을 제공합니다. 테스트 함수, 실패 보고, 테스트 실행 파일을 지원하므로 외부 프레임워크가 필요하지 않습니다.
테스트 함수 시그니처
테스트 함수 이름은 Test로 시작해야 하고 *testing.T를 인수로 받으며 _test.go로 끝나는 파일에 있어야 합니다.
func TestAdd(t *testing.T) {
got := Add(2, 3)
if got != 5 {
t.Errorf("Add(2,3) = %d; want 5", got)
}
}t.Error와 t.Fatal
t.Error는 실패를 표시하고 계속 진행하지만 t.Fatal은 실패를 표시한 뒤 현재 테스트를 즉시 중지합니다. 이후의 검사가 실패한 검사에 의존할 때는 Fatal을 사용하십시오.
테스트 실행
모든 테스트 실행: go test ./.... 특정 테스트 실행: go test -run TestAdd. 자세한 출력을 보려면 -v를 추가하십시오.
go test -v -run TestAdd ./...t.Helper
t.Helper()로 검사 도우미를 표시하면 오류 메시지에 도우미의 줄이 아니라 호출자의 줄이 보고됩니다.
func assertEqual(t *testing.T, got, want int) {
t.Helper()
if got != want {
t.Errorf("got %d; want %d", got, want)
}
}TestMain
TestMain(m *testing.M)은 전체 테스트 모음이 실행되기 전과 후에 설정 및 정리를 수행할 수 있는 선택적 진입점입니다(예: 테스트 데이터베이스 시작).
func TestMain(m *testing.M) {
setup()
code := m.Run()
teardown()
os.Exit(code)
}t.Run을 사용한 하위 테스트
t.Run으로 관련 사례를 그룹화하십시오. 각 하위 테스트는 독립적으로 실행되며 -run TestFoo/SubcaseName으로 특정 대상을 지정할 수 있습니다.
func TestMath(t *testing.T) {
t.Run("addition", func(t *testing.T) { /* ... */ })
t.Run("subtraction", func(t *testing.T) { /* ... */ })
}테스트 파일 구조
같은 패키지의 테스트는 내보내지 않은 식별자에 액세스할 수 있습니다. _test 패키지의 테스트(블랙박스 테스트)는 내보낸 식별자에만 액세스할 수 있습니다.
// white-box: package mylib
// black-box: package mylib_testgo 테스트 -cover
go test -cover로 코드 커버리지를 측정하십시오. 자세한 HTML 보고서를 보려면 go test -coverprofile=c.out ./... && go tool cover -html=c.out을 사용하십시오.
인터페이스를 사용한 테스트
실제 서비스를 시작하지 않고도 테스트에 가짜 구현을 전달할 수 있도록 인터페이스를 기준으로 코드를 설계하십시오.
t.Parallel
테스트 시작 부분에서 t.Parallel()을 호출하면 다른 병렬 테스트와 동시에 실행해도 안전하다고 표시되므로 테스트 모음의 실행 속도가 빨라집니다.
func TestRead(t *testing.T) {
t.Parallel()
// ...
}빠른 확인
t.Error와 t.Fatal의 차이점은 무엇입니까?
복습: testing을 사용한 단위 테스트
핵심 내용:
- 테스트 함수: _test.go 파일의 TestXxx(t *testing.T)
- t.Error는 계속 진행하고 t.Fatal은 테스트를 중지함
- 도우미에서 오류 줄 번호를 깔끔하게 표시하려면 t.Helper() 사용
- 하위 테스트에는 t.Run, 동시 테스트에는 t.Parallel 사용
자주 묻는 질문
“testing으로 단위 테스트 작성” 강의는 무료인가요?
네 — “testing으로 단위 테스트 작성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“testing으로 단위 테스트 작성”에서 뭘 배우나요?
TestXxx 함수, t.Error, t.Fatal 및 t.Helper 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Go Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“testing으로 단위 테스트 작성” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- testing으로 단위 테스트 작성
- 테이블 기반 테스트
- 테스트 대역: 모의 객체와 스텁
- 테스트 커버리지와 testify