データベースにアクセスするメソッドを含む、大規模なレガシー コードベースのファイルがあります。クラスは使用されず、メソッド宣言を含むヘッダー ファイルと実装を含むソース ファイルのみが使用されます。
これらのメソッドをオーバーライドして、単体テスト中に DB アクセスを排除したいと考えています。
次のオプションを考えました。
- ファイルをクラスにしてメソッドをオーバーライドします。
ここでの主な欠点は、コードベース全体に多くの変更が加えられることです。
コードは改善されますが、理想的ではありません... - ソース ファイル全体
#ifdef PRODUCTION_CODE
を でラップし、スタブを含む新しいソース ファイルを作成し、反対の方法でラップします。つまり、全体をコンパイルに依存させます。ここでの問題は、回帰テストを実行するビルド システムでは、アプリを作成して回帰テストを行うために 1 回、単体テストの実行可能ファイルを作成するために 2 回コンパイルする必要があることです。
これを行うための推奨される方法はありますか?