単体テストを別のアセンブリに配置するための通常の議論を認識しています (そして同意します)。ただし、最近、プライベート メソッドを本当にテストしたい状況がいくつか発生しています。問題の舞台裏のロジックは非常に複雑であるため、パブリック インターフェイスと内部インターフェイスをテストしてもうまくいきません。クラスの public インターフェースに対するテストはやり過ぎのように感じます。また、private に対していくつかのテストを行うことで、より簡単かつ効果的に作業を完了できる箇所がいくつか見られます。
過去に、テストに必要なものをprotected
作成し、テスト フレームワークでそれを取得するために使用できるサブクラスを作成することで、この種の状況に取り組んできました。しかし、そうあるべきクラスではうまくいきませんsealed
。言うまでもなく、すべての足場でテスト フレームワークが肥大化します。
そのため、代わりにこれを行うことを考えています。クラスにいくつかのテストを配置して、プライベート メンバーを取得できるようにします。ただし、「#if DEBUG」を使用して、それらを製品コードから除外してください。
これは良い考えのように思えますか?