golang 関数のテストケースを作成するにはどうすればよいですか?

WBOY
リリース: 2024-04-26 17:06:02
オリジナル
888 人が閲覧しました

Go で機能テスト ケースを作成するには、テスト パッケージを使用する必要があります。このパッケージには、テスト ケースを定義し (func Test)、失敗を報告する機能 (t.Error) が用意されています。単体テストは個々の機能を分離してテストしますが、統合テストは他のコンポーネントとの相互作用に焦点を当てます。サンプル テスト ケースでは、テスト パッケージを使用してテスト関数を定義し、入力および出力テスト ケースを定義し、結果を検証し、 go test コマンドを使用してテスト ケースを実行する方法を示します。

golang 関数のテストケースを作成するにはどうすればよいですか?

Go で関数テスト ケースを作成するためのガイドライン

Go コードを作成する場合、コードが堅牢で正しいことを確認するためにテスト ケースを作成することが重要です。以下は、Go 言語を使用した実際の例を含む、機能テスト ケースを作成するためのガイドです。

1. 単体テストと統合テスト

関数をテストする場合、主に 2 つのタイプがあります。

  • 単体テスト: 単一関数の分離動作をテストします。
  • 統合テスト: 関数が大規模なシステム内の他のコンポーネントとどのように対話するかをテストします。

2. Go の testing パッケージの使用

テスト ケースを作成するための Go 言語の標準ライブラリは testing # ## バッグ。このパッケージは、次のようないくつかの便利な関数と型を提供します。

  • func Test(t *testing.T): テスト ケースを定義します。
  • t.Error(): テストの失敗を報告します。
  • t.Fail(): テストはただちに失敗します。
  • t.Skip(): 現在のテストをスキップします。

3. テスト ケースを作成する

次は、関数テスト ケースを作成する例です:

package main

import "testing"

// myFunc 是要测试的函数
func myFunc(x int) int {
    return x * x
}

// TestMyFunc 测试 myFunc 函数
func TestMyFunc(t *testing.T) {
    // 定义测试用例
    tests := []struct {
        input int
        expected int
    }{
        {0, 0},
        {1, 1},
        {2, 4},
        {3, 9},
        {-1, 1},
    }

    for _, tc := range tests {
        // 调用正在测试的函数
        result := myFunc(tc.input)

        // 验证结果
        if result != tc.expected {
            t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result)
        }
    }
}
ログイン後にコピー

4テスト ケースの実行

次のコマンドを使用してテスト ケースを実行できます:

go test
ログイン後にコピー

5.リスト内の要素の合計を計算する計算関数:

func sum(nums []int) int {
    sum := 0
    for _, num := range nums {
        sum += num
    }
    return sum
}
ログイン後にコピー

次にいくつかのテスト ケースを示します:

func TestSum(t *testing.T) {
    tests := []struct {
        input []int
        expected int
    }{
        {[]int{}, 0},
        {[]int{1}, 1},
        {[]int{1, 2}, 3},
        {[]int{1, 2, 3}, 6},
        {[]int{-1, 0, 1}, 0},
    }

    for _, tc := range tests {
        result := sum(tc.input)

        if result != tc.expected {
            t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result)
        }
    }
}
ログイン後にコピー

以上がgolang 関数のテストケースを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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