Go 함수 단위 테스트를 위한 오류 처리 전략

WBOY
풀어 주다: 2024-05-02 11:21:01
원래의
985명이 탐색했습니다.

Go 함수 단위 테스트에는 오류 처리를 위한 두 가지 주요 전략이 있습니다. 1. 예상 값을 주장하는 데 사용되는 오류 유형의 특정 값으로 오류를 나타냅니다. 2. 테스트 함수에 오류를 전달하기 위해 채널을 사용합니다. , 이는 동시 코드를 테스트하는 데 적합합니다. 실제 사례에서는 오류 값 전략을 사용하여 함수가 음수 입력에 대해 0을 반환하도록 합니다.

Go 函数单元测试的错误处理策略

Go 함수 단위 테스트를 위한 오류 처리 전략

단위 테스트는 코드의 견고성과 신뢰성을 보장하는 중요한 단계입니다. 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
}
로그인 후 복사
🎜 오류 값 전략을 사용하는 단위 테스트는 다음을 보장합니다. 음수 입력에 대해 0을 반환하는 함수: 🎜
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿