複数の 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 サイトの他の関連記事を参照してください。