golang 関数をテストする正しい方法

PHPz
リリース: 2024-04-27 08:45:01
オリジナル
1110 人が閲覧しました

Go で関数をテストする正しい方法には、_test.go で終わるテスト ファイルを作成することが含まれます。 Test で始まるテスト関数を作成します。 t.Fail()、t.Error()、t.Fatal()、t.Skip() などの補助テスト ツールを使用します。 t.Equal()、t.NotEqual() などのアサーション メソッドを使用して、期待される結果と実際の結果を検証します。

golang 関数をテストする正しい方法

Go 言語での関数テストの正しい方法

コードが正しく実行されることを保証するため、Go 言語での関数テストは非常に重要です。あらゆる状況で。この記事では、関数テストに Go 言語の testing パッケージを使用する正しい方法を紹介します。

1. テスト ファイルを作成します

まず、テストする関数の新しいテスト ファイルを作成する必要があります。テスト ファイル名は _test.go で終わり、テスト対象の関数と同じパッケージに配置する必要があります。たとえば、mypackage/myfunc 関数をテストする場合、テスト ファイルは mypackage/myfunc_test.go になります。

2. テスト関数を記述する

テスト ファイルには、1 つ以上のテスト関数を記述する必要があります。各テスト関数は Test で始まり、その後にテスト関数の名前が続く必要があります。たとえば、次のコードは、Add 関数をテストする方法を示しています:

import (
    "testing"

    "mypackage"
)

func TestAdd(t *testing.T) {
    // ...
}
ログイン後にコピー

3。補助テスト ツール

testing を使用します。 パッケージ テスト作成を簡素化するための便利な補助テスト ツールをいくつか提供します。最も一般的に使用されるツールの一部を次に示します。

  • t.Fail(): テストが失敗した場合にテスト関数を中断します。
  • t.Error(): テスト エラーを記録しますが、テスト機能は中断されません。
  • t.Fatal(): テスト エラーを記録し、テスト関数を中断します。
  • t.Skip(): テスト関数をスキップします。

4. アサーション

アサーションは、テストの期待と実際の結果が一致するかどうかを検証するために使用されます。 testing このパッケージには、次のようないくつかのアサーション メソッドが用意されています。

  • t.Equal(a, b): Assert a and b 等しい。
  • t.NotEqual(a, b): ab が等しくないことをアサートします。
  • t.True(b): b が true であることをアサートします。
  • t.False(b): b が false であることをアサートします。

実際的なケース

testmypackage/myfunc 関数テスト ファイルを作成しましょう:

import (
    "testing"

    "mypackage"
)

func TestAdd(t *testing.T) {
    type testCase struct {
        a, b, want int
    }

    tests := []testCase{
        {1, 2, 3},
        {4, 5, 9},
        {-1, -2, -3},
    }

    for _, tc := range tests {
        got := mypackage.Add(tc.a, tc.b)
        if got != tc.want {
            t.Errorf("Add(%d, %d) = %d, want %d", tc.a, tc.b, got, tc.want)
        }
    }
}
ログイン後にコピー

Thisテスト ケースは 3 つのテスト ケースを定義し、それぞれに 3 つの入力変数 (ab および目的の出力 (want)) が含まれます。テスト関数は、for ループを使用してこれらのテスト ケースを反復し、テスト ケースごとに Add 関数を呼び出します。関数の出力が期待値と一致しない場合、テストは失敗し、エラー メッセージが記録されます。

以上がgolang 関数をテストする正しい方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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