良心的オブジェクト
2020年4月29日
プログラムエレメントには、本質的にテストが難しいものと、テストが不可能なものがあります。したがって、これらのエレメントのロジックにはバグが発生しやすく、進化させることが困難です。この問題を軽減するには、ロジック可能な限りハードテストエレメントから外し、コードベースのよりフレンドリーな部分に移動することです。テストできないオブジェクトを良心的に作成することにより[1]、悪性のバグが含まれる可能性を抑えます。

一般的な例は、ユーザーインターフェースにあります。一部のプラットフォームでは、UIコントロールに対して自動テストを実行するためのフックを提供していません。そのように提供されているものでも、複雑な設定、特別なフレームワーク、実行の遅いテストが必要になるため、テストが困難になることがよくあります。しかし、プレゼンテーションモデル (MVVM) や パッシブビュー などのパターンを使用して、これらのコントロールが最小限の動作だけを実施するようにすれば、効果的にテストできることがよくあります。
このアプローチに関する詳細については、Gerard Meszaros の xUnit テストパターンブックが主な情報源です。良心的オブジェクト に関するエントリはオンラインで公開されており、バリエーションと例など、さらに詳しい情報が含まれています。
注意事項
1: 「良心的」という言葉は、Michael Feathers の記事 に端を発します。