Qt C++ アプリケーションのコントローラーに関するいくつかの単体テストの設計を支援しようとしています。
率直に言って、私には2つの大きな欠点があります。1 つは、私のテストのバックグラウンドは .NET プロジェクトに大きく基づいているため、C++ の世界でのベスト プラクティスに関する私の知識はせいぜいわずかです。第 2 に、私が検討しているアプリケーションの設計者は、単体テストを念頭に置いてコードを設計していませんでした。
1 つの具体的なポイントとして、boost/filesystem/operations.hpp を含むコントローラー クラスを見ています。コントローラー コンストラクターは、ディレクトリの存在を確認し、boost ファイルシステム コードの関数を使用してディレクトリを作成します。
この動作をオーバーロードまたはモックする方法はありますか? 私は、.NET で IoC コンテナーまたは少なくとも依存関係が挿入されたコンストラクターをセットアップし、単体テスト コードでモック オブジェクトを渡すことができることに慣れています。ただし、テンプレート化されたヘッダー ファイルがその概念でどのように機能するか、または c++ での典型的な方法であるかどうかはわかりません。
今週リリース ビルドが予定されているため、現在、コードの変更を提案する柔軟性はありません。しかしその後、テスト容易性を改善できる簡単なコード変更があれば、それは間違いなくオプションです。ただし、単体テスト フレームワークでファイル システム関数をそのままオーバーロードする方法があれば理想的です。