C++レガシーコードの修正をTDDで行う

テストフレームワークのライブラリを新たに持ち込むということは、そのライブラリの面倒をみなきゃいけない(ライブラリのバージョンアップがあったらどうするとか、プロダクトプロジェクトが新しいプラットフォームをサポートするときにそのまま使い続けられるか確認するとか)ということで、なかなか気軽にはできないです。JUnitくらい突き抜けたデファクトスタンダードになれば別ですが。なので、今やってるプロジェクトでは、C標準ライブラリのassertマクロを使って、mainから各ユニットテストを呼び出すところは手書きで、というやり方で、ユニットテストを書くことにしました。
今日は、最初に手をつけたクラスは、テストスタブが使えないのでどうしても通せないところが若干あるものの、概ねスムーズにTDDできました。
それで気をよくして次のクラスに挑んだのですが、こちらはソース、実行ファイルともに依存性の塊で、どうしてもユニットテストから変更コードをドライブすることができませんでした。どうしようもなくて、結局、変更コードをユニットテストクラスの中にコピペして、そのペーストコードをテストしました。プロダクトコードをロックしてないんで保守的な意味では無価値ですが、完全に諦めてテストコードなしでプロダクトコードを直すよりかは、まあ1mmくらいはましかなと思ってのことです。