実稼働コードに公開せずに、あるモジュールから別のモジュールにテスト コードをインポートするにはどうすればよいですか?

PHPz
リリース: 2024-02-09 21:00:10
転載
593 人が閲覧しました

実稼働コードに公開せずに、あるモジュールから別のモジュールにテスト コードをインポートするにはどうすればよいですか?

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 サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!