ホームページ > バックエンド開発 > Golang > golang 関数のテストとカバレッジを改善するにはどうすればよいですか?

golang 関数のテストとカバレッジを改善するにはどうすればよいですか?

王林
リリース: 2024-04-28 08:45:01
オリジナル
1143 人が閲覧しました

Golang 関数のテスト カバレッジを向上するにはどうすればよいですか?カバレッジの測定: go test -cover コマンドを使用します。テスト ケース例外の追加: 未実行のコード パスに対するテスト ケース例外を追加します。カバレッジ プロファイルの使用: go test -coverprofile=cover.out を使用してカバレッジ プロファイルを作成します。カバー ツールを使用する: 詳細なカバレッジ レポートを表示するには、go ツール cover -html=cover.out を使用します。

golang 関数のテストとカバレッジを改善するにはどうすればよいですか?

Golang 関数のテスト カバレッジを改善する方法

はじめに

テストカバレッジ率は、テスト中にアプリケーションのどの部分が実行されたかを測定します。カバレッジが高いということは、アプリケーション内のコード パスの大部分がテスト中に実行されたことを示しており、そのためソフトウェアの信頼性が高まります。この記事では、Golang 関数のテスト カバレッジを改善する方法について説明します。

カバレッジの測定

カバレッジを測定するには、go test -cover コマンドを使用できます。このコマンドは、テストの実行後にカバレッジ レポートを出力します。

go test -cover
ログイン後にコピー

実際的なケース

次の Golang 関数について考えてみましょう:

func Sum(a, b int) int {
    return a + b
}
ログイン後にコピー

最初のテスト カバレッジ レポートは次のとおりです:

coverage: 50.0% of statements
ログイン後にコピー

カバレッジは、テスト内のコードの 50% のみが実行されることを示します。カバレッジを向上させるには、実行されないコード パスを実行するためのテスト ケース例外を追加する必要があります。

テスト ケース例外要因の追加

Sum 関数の場合、次のテスト ケース例外要因を追加して、未実行のコード パスをカバーできます。

func TestSumNegative(t *testing.T) {
    result := Sum(-1, -2)
    if result != -3 {
        t.Errorf("Expected -3, got %d", result)
    }
}
ログイン後にコピー

このテストでは、例外を使用して、関数が負の入力を処理するかどうかをテストします。このテスト ケース例外を追加すると、カバレッジ レポートは次のようになります。

coverage: 100.0% of statements
ログイン後にコピー

カバレッジ プロファイルの使用

カバレッジ関連の変更を追跡しやすくするには、次のコマンドを使用します。カバレッジプロファイル。カバレッジ プロファイルには、異なるテスト実行間の比較に使用できるカバレッジ データが含まれています。カバレッジ プロファイルを作成するには、go test -coverprofile=cover.out コマンドを使用します。

go test -coverprofile=cover.out
ログイン後にコピー

cover ツールの使用

cover ツールは、コード カバレッジ情報を参照できる対話型ツールです。 cover ツールを使用するには、次のコマンドを実行します。

go tool cover -html=cover.out
ログイン後にコピー

これにより、デフォルトのブラウザーで HTML レポートが開き、各関数とメソッドの詳細なカバレッジ データが表示されます。

概要

テスト ケースの例外を追加し、カバレッジ プロファイルを使用することで、Golang 関数のテスト カバレッジを改善できます。カバレッジが高いと、ソフトウェアの信頼性が高まり、コード内のテストされていない領域を特定するのに役立ちます。

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

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