ホームページ > バックエンド開発 > Golang > 複数の Go モジュールを含む親ディレクトリで「go test」を実行するにはどうすればよいですか?

複数の Go モジュールを含む親ディレクトリで「go test」を実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-02 21:51:30
オリジナル
944 人が閲覧しました

How to Run `go test` in a Parent Directory with Multiple Go Modules?

複数の Go モジュールの親ディレクトリで go テストを実行する

次のような複数の go モジュールを含むディレクトリ構造を操作する場合:

<code class="pre">/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go</code>
ログイン後にコピー

go test を実行しています。または、ルート ディレクトリ (/root) から test ./... を実行すると、パッケージが見つからなかったことを示すエラーが発生する場合があります。これは、go test が単一のモジュールで動作することを想定しているためです。

この制限を克服するための 1 つのアプローチは、シェル トリックを使用することです。たとえば、次のコマンドはサブディレクトリを反復処理し、それぞれのサブディレクトリで go test ./... を実行する必要があります:

<code class="pre">find . -type d -name main_test.go -exec go test '{}/' \;</code>
ログイン後にコピー

あるいは、多くのプロジェクトは、この操作を実行する Makefile またはテスト スクリプトを実装しています。たとえば、test.sh スクリプトには次のものが含まれます。

<code class="pre">for i in $(find . -type d -name main_test.go | sed 's|main_test.go||'); do
    cd $i
    go test ./...
    cd ..
done</code>
ログイン後にコピー

このスクリプトはリポジトリをループし、main_test.go ファイルを含む各サブディレクトリに移動し、 go test ./... を実行してから戻ります。

大規模なプロジェクトでは、go-cloud プロジェクト (https://github.com/google/go-cloud/blob/) によって維持されるものなど、すべてのモジュールのリストが維持される場合があります。マスター/すべてのモジュール)。このリストは、スクリプトでモジュールを反復処理し、テストの実行などのさまざまな操作を実行するために使用できます。

以上が複数の Go モジュールを含む親ディレクトリで「go test」を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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