親ディレクトリ内の複数のモジュールのテスト
親ディレクトリ内の複数の Go モジュールを操作する場合、複数の Go モジュール間でテストを実行するのは困難な場合があります。それらすべて。以下のようなディレクトリ構造を考えてみましょう:
/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go
問題:
go test./.. を使用して、親ディレクトリの下にあるすべてのモジュールのテストを実行しようとしています。結果はエラーになります:
go: warning: "./..." matched no packages no packages to test
解決策:
go test コマンドは、現在のディレクトリまたはその親にルートされた単一のモジュールで動作するように設計されています。ネストされたモジュールのテストはサポートされていません。
この問題を解決するには、シェル トリックを使用する必要があります。 Cerise Limón のコメントで示唆されているように、1 つのアプローチは find コマンドと xargs コマンドを組み合わせて使用することです。プロジェクトでは、このプロセスを自動化するために Makefile または test.sh スクリプトを作成することがよくあります。
多数のモジュールを含む大規模なプロジェクトの場合、より体系的なアプローチは、すべてのモジュールのリストを維持することです (Google の go-cloud プロジェクトのように) 。次に、プロジェクトはモジュール リストをループし、各ディレクトリのテストの実行などのタスクを実行するスクリプトを使用します。
例:
次の test.sh スクリプトはこれを示しています。アプローチ:
<code class="sh">#!/bin/bash for module in $(cat allmodules); do cd $module go test cd .. done</code>
注:
モジュールをリストするのに別個のファイルは必要ないかもしれませんが、go-cloud プロジェクトの実装は、どれほど大きくなるかを示す例を提供します。プロジェクトは複数モジュールのテストを管理します。
以上が親ディレクトリで複数の Go モジュールをテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。