質問
ユニットテストを内部クラスに書き込む方法???
解決
トップレベルクラスの外部インターフェイスの動作を指定するテストを記述します。そのクラスが内部クラスを使用してその動作を実装するかどうかは、クラスの実装の詳細であり、テストはそれについて何も知る必要はありません。
トップレベルクラスのインターフェイスを使用して内部クラスを適切にテストできない場合、通常は内部クラスを移動して、新しいトップレベルクラスとして直接テストするのが最善です。内部クラスをテストしたいのは、内部クラスがトップレベルのクラスになるほど重要であるというコードの匂いです。
他のヒント
推奨しませんが、 InternalsVisibleToAttribute 。
単体テストにMS Visual Studioを使用する場合、プライベートを作成する必要があります。アクセサー。内部的には、私は思うに反射で動作します。生成されたコードを見てください。
直接テストしないでください。定義されているクラスを通じてテストされます。
そして、この質問タグが現在示唆しているように、TDDを適用する場合、内部クラスの呼び出しを記述するだけのテストは何ですか?作業中のクラスが個人所有する標準クラスにできないのですか?
リフレクションを使用して内部クラスのメソッドをロードおよび呼び出すヘルパークラスを使用しました。 DEBUGシンボルを使用して、コンパイル時にアクセシビリティを変更することもできます。例:
#if DEBUG
public
#else
internal
#endif
class MyInternalClass
{
...
}
ただし、Esko Luontolaの答えは、機能またはビジネス要件が最も重要であるため、より正確です。重要なリスク領域をテストするのではなく、コードカバレッジに集中しすぎるのは簡単です。
所属していません StackOverflow