モジュール化された 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 サイトの他の関連記事を参照してください。