ホームページ > バックエンド開発 > Golang > golang関数の単体テストに関する実践的なチュートリアル

golang関数の単体テストに関する実践的なチュートリアル

PHPz
リリース: 2024-04-26 18:18:02
オリジナル
841 人が閲覧しました

Go 言語の単体テスト方法: テスト パッケージとテスト対象のパッケージをインポートします。 「Test」で始まるテスト関数を定義します。パラメータや期待される結果を含むテスト ケースを定義します。テスト ケースを繰り返し、関数を呼び出し、実際の結果と期待される結果を比較します。違いがある場合、トリガー テストは失敗します。

golang関数の単体テストに関する実践的なチュートリアル

Go 関数の単体テストに関する実践的なチュートリアル

単体テストはソフトウェア開発に不可欠な部分であり、確実に実行するのに役立ちます。コードの正確性を高め、欠陥を減らします。 Go では、組み込みの testing パッケージを使用して単体テストを作成できます。

コード例

名前パラメータを受け入れる Greet という名前の関数を含む greetPackage パッケージがあるとします。挨拶を返します。

package greetPackage

import "fmt"

func Greet(name string) string {
    return fmt.Sprintf("Hello, %s!", name)
}
ログイン後にコピー

testing パッケージを使用して単体テストを作成し、Greet 関数の機能をテストできます。

package greetPackage_test

import (
    "testing"

    "github.com/example/myproject/greetPackage"
)

func TestGreet(t *testing.T) {
    tests := []struct {
        name     string
        expected string
    }{
        {"Alice", "Hello, Alice!"},
        {"Bob", "Hello, Bob!"},
    }

    for _, test := range tests {
        actual := greetPackage.Greet(test.name)
        if actual != test.expected {
            t.Errorf("Greet(%s) = %s; expected %s", test.name, actual, test.expected)
        }
    }
}
ログイン後にコピー

仕組み

  • ステップ 1: 必要なパッケージを導入します。 testing パッケージとテスト対象のパッケージ (greetPackage) をインポートする必要があります。
  • ステップ 2: テスト関数を定義します。 テスト関数は「Test」で始まり、*testing.T パラメーターを受け入れる必要があります。
  • ステップ 3: テスト ケースを定義します。 tests 変数を使用してテスト ケース スライスを定義します。各ケースには、テスト対象のパラメーター (name) と期待される結果 (expected##) が含まれています。 #) 。
  • ステップ 4: テスト ケースを繰り返し、テストを実行します。 for ループを使用してテスト ケースを順番に調べ、greetPackage.Greet 関数を呼び出します。
  • ステップ 5: 実際の結果を確認します。 greetPackage.Greet 関数の実際の結果 (actual) と期待される結果 (expected) を比較し、一致する場合は ## を発生させます。 #t.エラーが異なります。
テストの実行

ターミナルで次のコマンドを実行してテストを実行します:

go test -v github.com/example/myproject/greetPackage
ログイン後にコピー

テストが成功すると、次の情報が出力されます:

PASS
ok  github.com/example/myproject/greetPackage  0.004s
ログイン後にコピー

以上がgolang関数の単体テストに関する実践的なチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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