php エディタ Yuzi ソフトウェア開発では、コードをテストする必要がよくあります。ただし、不必要な混乱を避けるために、テスト コードを運用環境に公開したくありません。では、本番コードに公開せずに、あるモジュールから別のモジュールにテスト コードをインポートするにはどうすればよいでしょうか?これはよくある問題ですが、解決策はあります。この記事では、この目標を達成し、コードの安全性と信頼性を高めるための効果的な方法を紹介します。
TLDR: logutils/test-logger_test.go に TestLogger 構造体を配置し、authentication/login_tests.go で参照しようとしました。認証モジュールのテストを構築するときに、コンパイラは TestLogger が宣言されていないと警告します。唯一の回避策は、test-logger_test.go の名前を test-logger.go に変更することですが、これにより実稼働コードで TestLogger が参照されるリスクが生じます。
go テストを実行するとき、golang はテスト コード (_test.go サフィックスが付いたファイルで宣言されたコード) をあるモジュールから別のモジュールにインポートしないようです。私が何か間違ったことをしているのでしょうか、それともこれが golang の設計方法なのでしょうか?解決策はありますか?
説明するための簡単な例:
「ライブラリ」モジュール (il logutils と呼びます) と「アプリケーション」モジュール (「認証」と呼びます) があります。 logutils モジュールには、ロガー (FileLogger、HttpLogger など) のすべての実装固有の機能をカバーする独自のテストがあり、すべて問題ありません。
logutils モジュールは、「クライアント」モジュール (「認証」など) が使用できる TestLogger も宣言します。これにより、ファイルや http ログを設定することなく、すべてを正しくログに記録できるようになります。基本的には Logger インターフェイスを実装するだけですが、テストの最後に検証できるバッファにすべてを記録するだけです。したがって、「認証」モジュールは、TestLogger をインスタンス化する独自の _test.go ファイルを宣言でき、すべてが魅力的に機能します。
私が気になるのは、TestLogger をテスト ファイル (logutils/test-logger_test.go) ではなく、通常の運用ファイル (logutils/test-logger.go) で宣言する必要があることです。そうしないと、認証テストでエラーが発生します。 TestLogger 定義されていません。ただし、これを実行しても、実稼働コードで TestLogger が参照/使用されることを妨げるものはありません。
私が望むのは、任意の logutils _test.go ファイル内のコードを任意の認証 _test.go ファイルにインポートできることです (ただし、運用環境の .go ファイルにはインポートできません)。
何か洞察/提案はありますか?
編集: タイプミスを修正しました
これは使用できません。とても簡単。 (「実稼働 .go ファイル」などというものはありません。テスト コードは「非実稼働」ではありません。)
以上が実稼働コードに公開せずに、あるモジュールから別のモジュールにテスト コードをインポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。