ホームページ > バックエンド開発 > Golang > golang 関数のエラー処理と単体テストの組み合わせ

golang 関数のエラー処理と単体テストの組み合わせ

王林
リリース: 2024-04-24 17:36:02
オリジナル
881 人が閲覧しました

GoLang のエラー処理では、fmt.Errorf() を通じて作成できるエラー タイプを使用してエラーを表します。単体テストでは、テスト ライブラリを使用して、テスト ケースを作成することで関数の正確さを検証し、返された結果が期待と一致しているかどうかを確認します。

golang 関数のエラー処理と単体テストの組み合わせ

#GoLang 関数のエラー処理と単体テスト

#エラー処理

## エラー処理#GoLang のメカニズムは非常にシンプルかつ効果的です。 error

型を使用すると、関数実行時のエラーを表すことができます。エラー メッセージは、

fmt.Errorf() 関数を通じて作成できます。

package main

import (
    "fmt"
)

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("cannot divide by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 2)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(result)
    }
}
ログイン後にコピー
単体テスト

単体テストは、関数の正しさを検証するために重要です。 GoLang は、単体テストを簡単に作成して実行するための testing

ライブラリを提供します。

package main

import (
    "fmt"
    "testing"
)

func TestDivide(t *testing.T) {
    type testCases struct {
        a int
        b int
        expected int
        expectedError error
    }

    cases := []testCases{
        {10, 2, 5, nil},
        {10, 0, 0, fmt.Errorf("cannot divide by zero")},
    }

    for _, c := range cases {
        result, err := divide(c.a, c.b)
        if result != c.expected || err != c.expectedError {
            t.Errorf("Test failed for input (%d, %d) expected (%d, %s) but got (%d, %s)", c.a, c.b, c.expected, c.expectedError, result, err)
        }
    }
}
ログイン後にコピー
この例では、さまざまなテスト ケースを含むテスト テーブルを作成しました。次に、各テスト ケースに対して divide

関数を実行し、返された値とエラーが期待される結果と一致することをアサートします。

エラー処理と単体テストを組み合わせることで、さまざまな入力状況下で関数が期待どおりに動作することを確認できます。

以上がgolang 関数のエラー処理と単体テストの組み合わせの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート