ホームページ  >  記事  >  バックエンド開発  >  インポートされたパッケージ内のテストコードを効果的に再利用するにはどうすればよいですか?

インポートされたパッケージ内のテストコードを効果的に再利用するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 09:09:02127ブラウズ

How to Reuse Test Code in Imported Packages Effectively?

インポートされたパッケージで再利用可能なコードをテストする

複数のパッケージやテスト ファイルを操作する場合、通常、パッケージからユーティリティ関数を再利用する必要が生じます。あるテストから別のテストへ。次のディレクトリ階層を考えてみましょう:

/<br>|-- main.go // パッケージ main、リクエストを受け取り、pkg1 で C/U API を呼び出して特定のタスクを完了する HTTP サーバー<br>|-- main_test.go // pkg1_test で VeryfyTaskNumber を呼び出したい<br>|-- pkg1 // pkg1 をパッケージ、Retrieve&Delete を使用した CRUD API は安全のためにアンエクスポートされています</p>
<pre class="brush:php;toolbar:false">|-- pkg1_test.go // contains a function verifyTaskNumber(*testing.T, taskName string, expectedNo int) which calls internal Retrieve function in pkg1

このシナリオでは、main_test.go は pkg1_test.go から verifyTaskNumber() にアクセスする必要があるため、次のような課題が生じます: インポートされたパッケージ内のテスト コードを効果的に再利用するにはどうすればよいですか?

一般的な 2 つのアプローチは次のとおりです。

  1. インポートされたパッケージへの関数の移動: このメソッドにより、プロジェクト内のすべてのテスト ファイルで関数を使用できるようになります。ただし、コンパイルされたバイナリに関数が含まれる可能性があり、この場合は望ましくありません。
  2. ユーティリティ テスト パッケージの作成: このアプローチには、関数を別のテスト ユーティリティ パッケージに移動し、関連するテスト ファイルにインポートします。このソリューションの欠点は、ユーティリティ パッケージの関数がインポートされたパッケージの内部メソッドに依存しており、アクセスできない可能性があることです。

より効果的な解決策は、内部メソッドの出力を保存することです。インポートされたパッケージ内の関数をサポート ファイルに追加します。このファイルは、ユーティリティ パッケージ内の対応する関数が呼び出されたときにロードできます。

たとえば、pkg1 にエクスポートされていない関数 Retrieve() がある場合、サポート ファイルをロードするユーティリティ パッケージ内に関数を作成できます。そして Retrieve() を呼び出します。このアプローチを使用すると、ユーティリティ パッケージの関数は、モジュール性やビルド アーティファクトを損なうことなく、インポートされたパッケージの内部メソッドにアクセスできます。

以上がインポートされたパッケージ内のテストコードを効果的に再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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