ホームページ >バックエンド開発 >Golang >go testの機能は何ですか?

go testの機能は何ですか?

青灯夜游
青灯夜游オリジナル
2023-02-01 16:55:334111ブラウズ

「go test」は、Go 言語で書かれたプログラムをテストするために使用されるテスト コマンドです。このテストはコード パッケージに基づいています。 "go test" コマンドは、いくつかのテスト関数を含むソース コード ディレクトリにある "*_test.go" という名前のソース コード ファイルを自動的に読み取ります。テスト関数には通常、名前のプレフィックスが "Test" で、タイプが "testing" です。 T" " 関数はパラメーターを使用して宣言されています。

go testの機能は何ですか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語には一連の単体テスト システムとパフォーマンス テスト システムがあり、少量のコードを追加するだけで必要なコードを迅速にテストできます。

go test コマンドは、ソース コード ディレクトリにある *_test.go という名前のファイルを自動的に読み取り、テスト用の実行可能ファイルを生成して実行します。

go test コマンド (テスト コマンド)

go test コマンドは、Go 言語で書かれたプログラムをテストするために使用されます。この種のテストはコード パッケージに基づいています。もちろん、これにはテスト ソース コード ファイルの助けも必要です。 Go プログラムのテスト コードの書き方と書き方については、この章の 2 番目のセクションで詳しく説明します。ここでは、コマンドを使用してテストを開始する方法についてのみ説明します。

go testこのコマンドは、指定された各コード パッケージを自動的にテストします。もちろん、指定されたコード パッケージ内にテスト ソース コード ファイルが存在することが前提となります。テストソースコードファイルは、名前の末尾に「_test.go」が付いたソースコードファイルであり、いくつかのテスト関数が含まれています。テスト関数は通常、名前の先頭に「Test」が付いており、タイプ「testing.T」のパラメーター宣言を持つ関数です。

ここで、goc2p プロジェクト内のいくつかのコード パッケージをテストしてみましょう。 go test コマンドを使用するときにコード パッケージを指定する方法は、他のコマンドの場合と同じです。コード パッケージのインポート パスを使用します。複数のコード パッケージをテストする必要がある場合は、インポート パスの間にスペースを追加して区切る必要があります。例は次のとおりです。

hc@ubt:~$ go test basic cnet/ctcp pkgtool
ok      basic    0.012s
ok      cnet/ctcp    2.014s
ok      pkgtool    0.014s

go test このコマンドは、コード パッケージ内のすべてのテスト ファイルを実行した後、コード パッケージの単位でテストの概要情報を出力します。上記の例では、3 つのコード パッケージに対応する 3 行の情報の最初の列は「ok」です。これは、全員がテストに合格したことを意味します。各行の 3 列目は、対応するテストの実行にかかった時間を秒単位で示します。コード パッケージ ディレクトリでパラメータを指定せずに go test コマンドを実行することもできます。その機能と結果は上記の例と同じです。

さらに、テスト用のテスト ソース コード ファイルを指定することもできます。この場合、go test コマンドは、次のように、指定されたファイル内のテストのみを実行します。

    hc@ubt:~/golang/goc2p/src/pkgtool$ go test envir_test.go
# command-line-arguments
./envir_test.go:25: undefined: GetGoroot
./envir_test.go:40: undefined: GetAllGopath
./envir_test.go:81: undefined: GetSrcDirs
./envir_test.go:83: undefined: GetAllGopath
./envir_test.go:90: undefined: GetGoroot
FAIL    command-line-arguments [build failed]

コンパイルまたは実行するソース コード ファイルを指定するのと同じように、次のことがわかります。コマンド プログラムは、ソース コード ファイルによって仮想コード パッケージ「コマンドライン引数」が生成されます。しかし、テストは不合格でした。しかし、その理由はテストが失敗したことではなく、コンパイルが失敗したことです。このテストを実行するコマンド プログラムのテスト ソース コード ファイル envir_test.go は、コード パッケージ「command-line-arguments」に属します。また、このテストソースコードファイルは、ライブラリソースコードファイル envir.go 内の関数を使用しています。ただし、このライブラリのソース コード ファイルがインポートされているコード パッケージは表示されません。これは明らかにコンパイルエラーを引き起こします。この問題を解決するには、コマンドの実行時に、このテスト ソース コード ファイルでテストされるソース コード ファイルも追加する必要があります。例は次のとおりです。

hc@ubt:~/golang/goc2p/src/pkgtool$ go test envir_test.go envir.go
ok      command-line-arguments    0.010s

ここで、コード パッケージ pkgtool 内の特定のテストに意図的に失敗します。ここで、もう一度テストを実行してみましょう。

hc@ubt:~$ go test basic cnet/ctcp pkgtool
ok      basic   0.010s
ok      cnet/ctcp       2.015s
--- FAIL: TestGetSrcDirs (0.00 seconds)
        envir_test.go:85: Error: The src dir '/usr/local/go/src/pkg' is incorrect.
FAIL
FAIL    pkgtool 0.009s

上記の例の概要情報から、テスト ソース コード ファイル内の envir_test.go のテスト関数 TestGetSrcDirs のテストが失敗したことがわかります。テストに失敗したテスト ソース ファイルの名前を含む情報の行で、テスト ソース ファイル名の直後のコロンで区切られた数字はエラー メッセージが含まれる行番号であり、その行の後のコロンで区切られた数字はエラー メッセージが含まれる行番号です。番号はエラーメッセージです。このエラー メッセージの内容はユーザーが作成したものです。また、概要情報の最終行には「FAIL」という接頭辞が付きます。これは、コード パッケージ pkgtool のテストが合格していないことを示します。失敗の理由は前のメッセージに記載されています。

通常の状況では、テスト ソース コード ファイルとテスト対象のソース コード ファイルを同じコード パッケージに配置します。また、これらのソースコードファイル内で宣言されているパッケージ名も同じです。さらに、別のオプションがあります。つまり、テスト ソース コード ファイルで宣言されるパッケージ名は、対応するパッケージの名前に「_test」サフィックスを加えたものにすることができます。この種のテスト ソース コード ファイルを、アウトオブパッケージ テスト ソース コード ファイルと呼びます。ただし、パッケージの外部でソース コード ファイルをテストすることには欠点があります。つまり、テスト対象のソース コード ファイル内のパッケージ レベルのプライベート プログラム エンティティは、パッケージ レベルのプライベート変数、関数、テスト関数などのテスト関数でテストできません。そして構造タイプ。これは、両者が属するコード パッケージが異なるためです。したがって、通常、パッケージ外のテスト ソース コード ファイルを作成することはほとんどありません。

タグについて

go test コマンドのタグ処理部分は非常に大きく複雑であるため、Go 言語開発者はロジックのこの部分を go test コマンドの本体から分離する必要があります。プログラム ソースコードファイルを分離して作成します。 go test コマンドにはコンパイル アクションが含まれているため、go build コマンドで使用できるすべてのタグを受け入れることができます。さらに、多くのユニークなマーキングが施されています。これらのタグはコマンド自体の動作を制御するために使用され、一部はテスト プロセスと環境の制御とセットアップに使用され、一部はより詳細なテスト結果と統計情報を生成するために使用されます。

go test コマンドで使用できる一般的なタグには、-c-i などがあります。 -o 。これら 2 つは、go test コマンド自体のアクションを制御するために使用されるマーカーです。詳細については、以下の表を参照してください。

表 0-6 go testコマンドの説明をマーク

マーク名 マークの説明
-c テストを実行するための実行可能ファイルを生成しますが、実行はしません。この実行可能ファイルの名前は「pkg.test」になります。「pkg」は、テスト対象のコード パッケージのインポート パスの最後の要素の名前です。
-i テストの実行に必要な依存関係パッケージをインストール/再インストールしますが、テスト コードをコンパイルして実行することはしません。
-o テストの実行に使用する実行可能ファイルの名前を指定します。タグ -c または -i も追加されない限り、このタグを追加してもテスト コードの実行には影響しません。
#上記のタグは併用可能です。これらを一緒に使用する目的は、

go test コマンドで依存関係パッケージをインストールし、テスト コードをコンパイルしますが、テストを実行することではありません。つまり、テストを実行する前に、コマンド プログラムにすべてのプロセスを実行させます。これは、テスト プロセスをテストするために使用できます。 -c タグを追加すると、コマンド プログラムはテストの実行に使用される実行可能ファイルを現在のディレクトリに保存することに注意してください。

【関連する推奨事項:

Go ビデオ チュートリアル プログラミング教育

以上がgo testの機能は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Go の Revive とは次の記事:Go の Revive とは