Golang 関数のテストとデバッグ

WBOY
リリース: 2024-04-15 15:36:01
オリジナル
548 人が閲覧しました

Golang で関数をテストする: _test.go で終わるテスト ファイルを作成します。 TestXXX という名前のテスト関数を宣言します。XXX はテスト対象の関数の名前です。アサーションを使用して、期待される結果が実際の結果と一致することを検証します。ブレークポイントを設定し、デバッガーを使用してテストの失敗をデバッグします。テーブル駆動のテストおよびカバレッジ ツールを使用して、テストの効率を高めます。

Golang 関数のテストとデバッグ

Golang 関数のテストとデバッグ

Golang では、テストはコードの信頼性と正確性を確保するための重要な実践です。 。このチュートリアルでは、Golang の組み込みテスト フレームワークを使用して関数をテストおよびデバッグする方法を説明します。

テスト関数

関数をテストするには、_test.go で終わる新しいファイルを作成する必要があります。このファイルは、テスト対象の関数と同じパッケージ内にあります。テスト ファイルで、testing パッケージの TestXXX 関数を使用してテスト関数を宣言します。ここで、XXX はテスト対象の関数の名前です。例:

// my_function_test.go

package mypackage

import (
    "testing"
)

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

Assertion

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

  • t.Equal(a, b): Verify aおよび b は等しいかどうか
  • t.ErrorIs(err, ExpectedError): errexpectedError が同じエラー
  • t.True(cond): condtrue

であることを確認してください実際のケース

2 つの数値引数を受け取り、その合計を返す add という関数があるとします。次のテスト関数を作成して、add 関数をテストできます:

// my_function_test.go

import (
    "testing"
)

func TestAdd(t *testing.T) {
    tests := []struct {
        a, b int
        want int
    }{
        {1, 2, 3},
        {3, 4, 7},
        {-1, -2, -3},
    }

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

Debug

デバッグ テストが失敗した場合は、ソースを渡すことができます。 code デバッガーを使用するためのブレークポイントを設定します。 VSCode などの IDE では、コード内の行を右クリックし、[ブレークポイントの設定/削除] を選択してブレークポイントを設定できます。コードがデバッガーで実行されると、ブレークポイントで一時停止し、変数とスタック トレースを検査できるようになります。

ヒント

  • テーブル駆動テストを使用して、複数の入力セットのテストを簡素化します。
  • カバレッジ ツールを使用して、テスト コードが関数ロジックを十分にカバーしていることを確認します。
  • テスト コードを継続的統合システムと統合して、コードが変更されたときにテストを自動的に実行します。

以上がGolang 関数のテストとデバッグの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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