ホームページ >バックエンド開発 >Golang >replace ディレクティブを使用してインポートされたローカル go モジュールをテストし、ホーム フォルダー内のベンダー ディレクトリを使用します。

replace ディレクティブを使用してインポートされたローカル go モジュールをテストし、ホーム フォルダー内のベンダー ディレクトリを使用します。

WBOY
WBOY転載
2024-02-10 16:27:11734ブラウズ

测试使用替换指令导入的本地 go 模块并使用主文件夹中的供应商目录

この記事では、編集者の Youzi が、置換コマンドを使用して go モジュールをローカルにインポートし、メイン フォルダーのサプライヤー ディレクトリを使用する方法を紹介します。置換命令は Go 言語の強力な機能であり、これにより開発プロセス中にローカル モジュールをより柔軟に導入でき、コードの保守性と再利用性が向上します。この記事のガイダンスを通じて、誰もがこのテクニックを簡単にマスターし、Go 言語をより効率的に開発できるようになると思います。それでは具体的な手順を見ていきましょう!

質問内容

myexporter はローカル モジュールで、replace を使用してメイン モジュールにインポートします。メインプロジェクトのルートにあるベンダーフォルダーを使用して、myexporter でテストを実行したいと考えています。

私のプロジェクトのディレクトリ構造は次のようになります

リーリー

myexporter go.mod ファイル

リーリー

エージェント go.mod ファイルには

があります リーリー

私の質問は

です
  1. 「go test -mod=vendor ./...」を実行すると、main_test run でのみテストされます
  2. 「go test -mod=vendor exporter/myexporter」を使用すると、「package exporter/myexporter is not in goroot」というメッセージが表示されます
  3. 「go test -mod=vendor bitbucket.com/agent/exporter/myexporter」を実行すると、テスト ファイルがありません
  4. exporter/myexporter ディレクトリに切り替えて「go test ./...」を実行すると機能しますが、「go test -mod=vendor ./...」は機能しません。これは、vendor ディレクトリが存在するためです。エージェントのルートディレクトリ李>
  5. 「go test -mod=vendor ./exporter/myexporter/」を実行すると、「メイン モジュール (bitbucket.com/agent) にはパッケージ bitbucket.com/agent/exporter/myexporter が含まれていません」というメッセージが表示されます。
ビルドは go パッケージにアクセスできません。ベンダー フォルダーに依存し、テストにも同じことが当てはまります。 myexporter 内の別のベンダー フォルダーに依存関係の複数のコピーが存在することは望ましくありません。エージェント/ベンダーフォルダーを使用して myexporter 内でテストを実行する方法はありますか?

回避策

エージェント/ベンダー フォルダーを使用して MyExporter 内でテストを実行する方法はありますか?

###いいえ。

myexporter がどこにあるかをテストする必要があります。提供されると、実際のコードのみが提供されます。

唯一の可能性はモジュールを結合することです。

これは要するに次のことです。何らかの方法で 2 つのモジュールを並行/一貫してテストする必要がある場合、それらは実際には

異なる

ライフサイクルを持つ 2 つの異なるモジュールではありません。これらが異なるライフサイクルを持つ別個のものである場合は、最初のものをテストし、動作することを確認して、2 番目のものに提供することができます。次に、最初のテストの使用を含めて 2 番目のテストをテストします。ただし、最初のテストは不要になったので実行しないでください。

以上がreplace ディレクティブを使用してインポートされたローカル go モジュールをテストし、ホーム フォルダー内のベンダー ディレクトリを使用します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。