ホームページ  >  記事  >  バックエンド開発  >  複数のパッケージにわたって Go テストを連続的に実行するにはどうすればよいですか?

複数のパッケージにわたって Go テストを連続的に実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 07:59:30166ブラウズ

How to Execute Go Tests Sequentially across Multiple Packages?

複数の Go パッケージ間でテストを順次実行する方法

go test ./... を使用して複数のパッケージのテストを実行する場合、重要です。並列化の側面を考慮します。デフォルトでは、テストはパッケージ間で同時に実行されます。ただし、データベースベースのテストなどの特定のシナリオでは、順次実行が必要です。

この例では、テストの並列実行によりデータベースの競合が発生します。各テスト ファイルはグローバル データベース変数を定義しており、テストを同時に実行すると競合が発生する可能性があります。

解決策:

パッケージ間で順次実行を強制するには、文書化されていない -p フラグを使用します。

go test -p 1 ./...

-p 1 フラグは、すべてのパッケージをシリアルにビルドしてテストし、競合の問題を解決します。

代替解決策 (シェル スクリプトを使用) :

-p 1 フラグの使用が不可能な場合は、代替のシェル スクリプト ベースのアプローチを使用できます。 Bash スクリプトの例を次に示します。

find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test

このスクリプトは、.go ファイルを含むすべてのサブディレクトリをリストし、重複を削除し、各サブディレクトリで go test を順番に実行します。

以上が複数のパッケージにわたって Go テストを連続的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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