Golang의 함수 테스트: _test.go로 끝나는 테스트 파일을 만듭니다. TestXXX라는 테스트 함수를 선언합니다. 여기서 XXX는 테스트 중인 함수의 이름입니다. 어설션을 사용하여 예상 결과가 실제 결과와 일치하는지 확인하세요. 중단점을 설정하고 디버거를 사용하여 테스트 실패를 디버깅합니다. 테이블 중심 테스트 및 적용 범위 도구를 사용하여 테스트 효율성을 향상시킵니다.
Golang 함수 테스트 및 디버깅
Golang에서 테스트는 코드의 신뢰성과 정확성을 보장하는 중요한 방법입니다. 이 튜토리얼에서는 Golang의 내장 테스트 프레임워크를 사용하여 기능을 테스트하고 디버그하는 방법을 안내합니다.
함수 테스트
함수를 테스트하려면 _test.go
로 끝나는 새 파일을 만들어야 합니다. 이 파일은 테스트 중인 함수와 동일한 패키지에 있습니다. 테스트 파일에서 testing
패키지의 TestXXX
함수를 사용하여 테스트 함수를 선언합니다. 여기서 XXX
는 테스트 중인 함수의 이름입니다. 예: _test.go
结尾的新文件。该文件位于与被测函数相同的包中。在测试文件中,使用 testing
包的 TestXXX
函数声明一个测试函数,其中 XXX
是被测函数的名称。例如:
// my_function_test.go package mypackage import ( "testing" ) func TestAdd(t *testing.T) { // ... }
断言
在测试函数中,使用断言来验证预期结果与实际结果是否一致。testing
包提供了多种断言函数,例如:
t.Equal(a, b)
:验证 a
和 b
是否相等t.ErrorIs(err, expectedError)
:验证 err
和 expectedError
是否是相同的错误t.True(cond)
:验证 cond
为 true
实战案例
假设你有一个名为 add
的函数,该函数接受两个数字参数并返回它们的和。你可以编写以下测试函数来测试 add
// my_function_test.go import ( "testing" ) func TestAdd(t *testing.T) { tests := []struct { a, b int want int }{ {1, 2, 3}, {3, 4, 7}, {-1, -2, -3}, } for _, tt := range tests { got := add(tt.a, tt.b) if got != tt.want { t.Errorf("add(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.want) } } }
Assertion
테스트 함수에서 어설션을 사용하여 예상 결과가 실제 결과와 일치하는지 확인합니다.testing
패키지는 다음과 같은 다양한 어설션 기능을 제공합니다.
t.Equal(a, b)
: a
및 b가 같은지 여부t.ErrorIs(err, ExpectError)
: err
와 expectedError
가 동일한지 확인하세요. error
t.True(cond)
: cond
가 true
add
의 함수라고 합니다. 다음 테스트 함수를 작성하여 add
함수를 테스트할 수 있습니다. 🎜rrreee🎜🎜Debugging🎜🎜🎜디버깅 테스트가 실패한 경우 소스 코드에 중단점을 설정하여 디버거를 사용할 수 있습니다. VSCode와 같은 IDE에서는 코드 줄을 마우스 오른쪽 버튼으로 클릭하고 "중단점 설정/제거"를 선택하여 중단점을 설정할 수 있습니다. 디버거에서 코드가 실행되면 중단점에서 일시 중지되어 변수 및 스택 추적을 검사할 수 있습니다. 🎜🎜🎜Tip🎜🎜🎜🎜테이블 중심 테스트를 사용하여 여러 입력 세트에 대한 테스트를 단순화하세요. 🎜🎜커버리지 도구를 사용하여 테스트 코드가 충분한 함수 로직을 포괄하는지 확인하세요. 🎜🎜테스트 코드를 지속적인 통합 시스템과 통합하여 코드 변경 시 자동으로 테스트를 실행합니다. 🎜🎜위 내용은 Golang 함수 테스트 및 디버깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!