Golangでテスト可能なサンプル関数(Example Function)の詳細説明

Golang でテスト可能な関数の例 (関数例)

サンプル関数は単体テスト関数に似ていますが、 *testing 型のパラメーターがありません。関数の例を書くのも簡単です。

  1. 対応するテスト ファイルを作成する: Go プロジェクトのソース コード ディレクトリに、接尾辞 _test.go が付いた新しいファイル (テストされたコード ファイルと同じパッケージ内) を作成します。たとえば、net パッケージの dial.go でメソッドをテストするには、net パッケージに、単体テスト ファイルと同じ、dial_test.go、net_test.go、または example_test.go という名前のファイルを作成します。
  2. サンプル関数を作成する: テスト ファイル内で、Example という接頭辞を付けた関数を作成し、その後にテスト ケースの名前を識別する 1 つ以上の文字または文字の組み合わせを記述します (通常は、パッケージ名、関数名、構造体名などの後に文字を続けることもできます)、パラメーターはありません。
  3. メソッド本体に使用方法を記述し、その内容を標準出力に出力します。メソッド本体の最後に、「出力:」または「順序なし出力:」のコメントを追加できますが、追加する必要はありません。「Output:」注釈が追加された場合、出力は注釈と正確に比較されます。「順序付けされていない出力:」注釈が追加された場合、出力も注釈と比較されますが、行順序は無視されます。出力注釈を追加しないと、サンプル関数はコンパイルされますが、実行されません。

テスト可能な例と関数の例

JSON 形式検証ツール https://github.com/luduoxin/json-validator-go を例に挙げると、バリデーター パッケージの Scanner.go ファイル内のキー関数 Valid は、指定された文字列が JSON 内にあるかどうかを検証するために使用されます。に対応する形式。テスト ファイルはscanner_test.go、内部のサンプル関数はExampleValid、コードは次のとおりです。

func ExampleValid() {
	fmt.Println(Valid([]byte("{}")))
	// output: true
}

実行して効果を確認します。

=== RUN   ExampleValid
--- PASS: ExampleValid (0.00s)
PASS

複数の出力結果の例を参照してください。

func ExampleValid() {
	fmt.Println(Valid([]byte("{}")))
	fmt.Println(Valid([]byte(`a:b`)))
	// output: true
	// false
}

実行して効果を確認します。

=== RUN   ExampleValid
--- PASS: ExampleValid (0.00s)
PASS

「順序なし出力:」注釈の例を参照してください。

func ExampleValid() {
	fmt.Println(Valid([]byte("{}")))
	fmt.Println(Valid([]byte(`{"a":"b"}`)))
	// Unordered output: true
	// true
}

実行して効果を確認します。

=== RUN   ExampleValid
--- PASS: ExampleValid (0.00s)
PASS

テストに失敗した例を見てください。

func ExampleValid() {
	fmt.Println(Valid([]byte("{}")))
	fmt.Println(Valid([]byte(`{"a":"b"}`)))
	// Unordered output: true
	// false
}

実行して効果を確認します。

=== RUN   ExampleValid
--- FAIL: ExampleValid (0.00s)
got:
true
true

出力注釈のない例を参照してください。

func ExampleValid() {
	fmt.Println(Valid([]byte("{}")))
}

go test コマンドを実行すると、この機能は実行されません。

上記のテスト例 (実行結果が PASS である例) に合格するとはどういう意味ですか? サンプルの実行時、テスト フレームワークは標準出力に書き込まれたデータをキャプチャし、それを「output:」注釈の結果と比較し、一致する場合はテストに合格し、そうでない場合はテストは失敗します (結果は FAIL)。 。

Godoc でのプレゼンテーション

サンプル関数は、Godoc の対応する関数の例として使用されます。公式 Golang のスクリーンショットを参照してください。

 

Godoc は、命名規則を使用してサンプル関数をパッケージレベルの識別子に関連付けます。合意されたルールは次のとおりです。

func ExampleFoo()     // documents the Foo function or type
func ExampleBar_Qux() // documents the Qux method of type Bar
func Example()        // documents the package as a whole

この規則に従って、Godoc は、Reverse 関数のドキュメントと一緒に ExampleReverse の例を表示します。アンダースコアで始まり、その後に小文字が続くサフィックスを使用することで、特定の関数 (またはパッケージ、構造体、メソッドなど) に複数のインスタンスを指定できます。次のように:

func ExampleReverse()
func ExampleReverse_second()
func ExampleReverse_third()

まとめ

この記事では、Golang で簡単に可読性の高いドキュメントに変換できる、Golang でテスト可能なサンプル関数について詳しく説明します これは、Golang が提唱するドキュメントとしてのコードのベストプラクティスでもあります まだ使用したことがない方は、急いでみましょうこれを使って。

 

おすすめ

転載: blog.csdn.net/luduoyuan/article/details/131869264