ホームページ > バックエンド開発 > Golang > Go 単体テストでカスタム コマンドライン フラグを処理するにはどうすればよいですか?

Go 単体テストでカスタム コマンドライン フラグを処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-29 09:31:12
オリジナル
610 人が閲覧しました

How to Handle Custom Command-Line Flags in Go Unit Tests?

Go 単体テストでのコマンド ライン フラグのカスタマイズ

モジュール化された Go アプリケーションと、特定のアプリケーション モジュールを利用する単体テストを操作する場合、コマンドをテストするのが困難になることがあります。ユーザー定義のフラグに依存するライン機能。

次の点を考慮してください。例:

func init() {
    flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory")
}
ログイン後にコピー

次のコマンドでこの機能をテストしようとすると、

go test -test.v ./... -gamedir.custom=c:/resources
ログイン後にコピー

ランタイムはエラーを返します:

flag provided but not defined: -gamedir.custom
ログイン後にコピー

問題の理解

このエラーは、go test コマンドが個別のテストを同時に実行するために発生します。 -test.v フラグを使用すると、複数のテスト実行可能ファイルが作成され、それぞれに独自のコマンドライン フラグが設定されます。特定のテストが -gamedir.custom フラグを明示的に処理しない場合、前述のエラーで失敗します。

解決策: 個々のテストでのフラグの定義

この問題を解決するには、次のコマンドを定義します。各テスト ファイル内の -line フラグ。これにより、すべてのテスト実行可能ファイルが必要なフラグを処理できるようになります。

例:

func TestMyModule(t *testing.T) {
    flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory")

    // Test code here...
}
ログイン後にコピー

各テスト関数内でフラグを定義することで、すべてのテスト実行可能ファイルに適切なフラグが定義されるようになります。エラーなしで実行できます。

以上がGo 単体テストでカスタム コマンドライン フラグを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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