NUnitテストを作成するために部分クラスを使用することの長所と短所は何ですか?
始めます:
プロ:プライベートメソッドをテストできます
コン:TDDはもう実際には不可能です
ほかに何か?
NUnitテストを作成するために部分クラスを使用することの長所と短所は何ですか?
始めます:
プロ:プライベートメソッドをテストできます
コン:TDDはもう実際には不可能です
ほかに何か?
短所:出荷するビルドとは異なるビルドをテストする必要があるか、出荷コードに単体テストコード(およびメンバー)が含まれることになります。
一般的に、私には本当に悪い考えのように聞こえます。
私は通常、内部メソッドのテストを許可して、別々の生産/テストプロジェクトに[InternalsVisibleTo]
行きます (これは一部の人々の教義に反しますが、私には実用的です)。
プライベート メソッドをテストできることは、既存のクラス内での新しいコードの増加を促進する可能性があるため、'con' であると私は主張します。プライベート ロジックが非常に複雑で、専用のテストが必要な場合 (パブリックにアクセスできるものを超えて)、パブリックにテスト可能なインターフェイスを持つ別のクラスとしてそのロジックを引き出すことには多くの価値があります。境界線上のケースについては、内部メソッドを使用するという Jon のアプローチに慎重に同意します (ただし、内部がどれだけ露出しているかに注意してください)。
とは言うものの、部分クラス アプローチと大まかに関連する効果の検出に仮想メソッド呼び出しを使用するテストを記述できるように、特に封印されていないクラスを作成することがあります。これはいつも私にとって少し汚いと感じており、クラスを「内部開封済み」としてマークする方法があればいいのにと思うことがありました。