オブジェクトの公開インターフェイス設計だいじ
テストコードがテスト対象の実装詳細と密結合しているとリファクタリングした時に壊れやすい
じゃあテストコードとテスト対象オブジェクトはどのような結びつきが良いのかというと、
テスト対象オブジェクトの公開インターフェイスにのみ結びついている形が良い。
ソフトウェアを使う人がいてサービス提供を続ける限り、コードを継続的にリファクタリングしていく必要があるから、
どのようなオブジェクトもリファクタリングの対象となる機会があると思う。
リファクタリングって外から見た振る舞いを変えずに中身の具体的実装をカイゼンするものだけど、リファクタリングをしているともはやインターフェイスから抜本的に変えたくなる場合がある。こういうとき、変更前のインターフェイスを前提にしていたテストはもちろん壊れる。
やむを得ない場合もあるとは思いつつ、インターフェイスをうまく設計していきたいなと思う。
仮にもインターフェイスを変えるとなったら、いきなりの変更は怖いからAdaptorパターン等を使って既存のインターフェイスを維持しながら徐々に変えていくといいのかな?