golang 함수 오류 처리의 단위 테스트

WBOY
풀어 주다: 2024-05-01 16:36:01
원래의
1022명이 탐색했습니다.

단위 테스트 Go 언어의 함수 오류 처리 방법은 다음과 같습니다. 모의 입력 생성: 제어된 오류가 있는 모의 객체를 생성합니다. 오류 메시지 확인: 반환된 오류 메시지를 예상 메시지와 일치시킵니다. 오류 조건 커버: 가능한 모든 오류 조건에 대한 테스트 사례를 작성합니다.

golang 함수 오류 처리의 단위 테스트

Go 언어 함수의 오류 처리에서 단위 테스트

Background

Go 언어에서 함수의 오류는 error 유형의 값을 확인하여 처리됩니다. 올바른 오류 처리를 보장하려면 단위 테스트를 수행하는 것이 중요합니다. error 类型的值来处理函数中的错误。为了确保错误处理的正确性,执行单元测试至关重要。

单元测试策略

对函数中的错误处理进行单元测试时,以下策略非常有效:

  • 创建模拟作为输入:创建模拟对象(例如,模拟文件系统或网络调用),这些对象会返回可控错误。
  • 断言错误消息:使用诸如 assert.Equal()
  • 단위 테스트 전략
  • 함수에서 오류 처리를 단위 테스트할 때 다음 전략이 매우 효과적입니다. 네트워크 호출) 이러한 개체는 제어된 오류를 반환합니다.

Assert 오류 메시지: assert.Equal()와 같은 어설션 라이브러리를 사용하여 반환된 오류 메시지가 예상 오류 메시지와 일치하는지 확인하세요.

오류 사례 커버

: 가능한 모든 오류 상황에 대한 테스트 사례를 작성하세요. 이렇게 하면 모든 경우에 오류 처리 논리가 예상대로 작동합니다.

실용 예

두 숫자의 합을 계산하는 다음 함수를 고려하세요.

func Sum(a, b int) (int, error) {
    if a < 0 || b < 0 {
        return 0, errors.New("non-negative integers only")
    }
    return a + b, nil
}
로그인 후 복사

🎜Unit Test🎜🎜
import (
    "errors"
    "testing"
)

func TestSum(t *testing.T) {
    tests := []struct {
        a, b int
        expected int
        err error
    }{
        {a: 1, b: 2, expected: 3, err: nil},
        {a: -1, b: 2, expected: 0, err: errors.New("non-negative integers only")},
    }

    for _, tt := range tests {
        t.Run("test", func(t *testing.T) {
            sum, err := Sum(tt.a, tt.b)
            if sum != tt.expected {
                t.Errorf("Expected %d, got %d", tt.expected, sum)
            }
            if !errors.Is(err, tt.err) {
                t.Errorf("Expected error %q, got %q", tt.err, err)
            }
        })
    }
}
로그인 후 복사
🎜🎜Conclusion🎜🎜🎜모의 입력, 오류 메시지 어설션 및 철저한 테스트 사례 적용 범위를 사용하여 이 Go 언어에서 함수 오류 처리를 테스트하기 위해 효과적으로 수행할 수 있습니다. 이는 코드가 강력하고 안정적이라는 것을 보장하는 데 도움이 됩니다. 🎜

위 내용은 golang 함수 오류 처리의 단위 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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