Go 함수 단위 테스트에는 오류 처리를 위한 두 가지 주요 전략이 있습니다. 1. 예상 값을 주장하는 데 사용되는 오류 유형의 특정 값으로 오류를 나타냅니다. 2. 테스트 함수에 오류를 전달하기 위해 채널을 사용합니다. , 이는 동시 코드를 테스트하는 데 적합합니다. 실제 사례에서는 오류 값 전략을 사용하여 함수가 음수 입력에 대해 0을 반환하도록 합니다.
단위 테스트는 코드의 견고성과 신뢰성을 보장하는 중요한 단계입니다. Go에서는 오류 처리를 위한 여러 전략이 포함된 testing
패키지를 사용하여 단위 테스트를 수행할 수 있습니다. testing
包来执行单元测试,其中包含处理错误的几种策略。
Go 中有两种处理错误的主要策略:
1. 错误值
将错误表示为 error
Go에는 두 가지 주요 오류 처리 전략이 있습니다.
1. 오류 값
오류를error
유형의 특정 값으로 나타냅니다. 단위 테스트에서 이 방법을 사용하려면 예상 값에 오류를 어설션할 수 있습니다. func TestMyFunction(t *testing.T) { err := myFunction() if err != nil { t.Errorf("myFunction returned an unexpected error: %v", err) } }
2. 오류 채널
🎜🎜채널을 사용하여 테스트 기능에 오류를 전달합니다. 여러 오류가 동시에 관찰될 수 있으므로 이는 동시 코드를 테스트하는 데 유용합니다. 🎜func TestMyConcurrentFunction(t *testing.T) { done := make(chan error) go func() { done <- myConcurrentFunction() }() select { case err := <-done: if err != nil { t.Errorf("myConcurrentFunction returned an unexpected error: %v", err) } case <-time.After(time.Second): t.Errorf("myConcurrentFunction did not complete within the timeout") } }
func sum(numbers []int) int { total := 0 for _, num := range numbers { if num < 0 { return 0 } total += num } return total }
func TestSum(t *testing.T) { tests := []struct { input []int result int }{ {[]int{1, 2, 3}, 6}, {[]int{0, 0, 0}, 0}, {[]int{-1, 0, 1}, 0}, } for _, test := range tests { result := sum(test.input) if result != test.result { t.Errorf("sum(%v) returned %d, expected %d", test.input, result, test.result) } } }
위 내용은 Go 함수 단위 테스트를 위한 오류 처리 전략의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!