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

親ディレクトリで複数の Go モジュールをテストするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 03:19:031078ブラウズ

How to Test Multiple Go Modules in a Parent Directory?

親ディレクトリ内の複数のモジュールのテスト

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

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