内部クラスに単体テストを書く方法???
6 に答える
トップレベル クラスの外部インターフェイスの動作を指定するテストを記述します。そのクラスが内部クラスを使用してその動作を実装するかどうかは、クラスの実装の詳細であり、テストはそれについて何も知る必要はありません。
トップレベル クラスのインターフェイスを介して内部クラスを適切にテストできない場合は、通常、内部クラスを移動して、新しいトップレベル クラスとして直接テストすることをお勧めします。内部クラスをテストしたいというのは、内部クラスが最上位クラスになるほど重要である可能性があるというコードの匂いです。
お勧めしませんが、InternalsVisibleToAttributeを使用することもできます。
単体テストに MS Visual Studio を使用する場合は、単純にプライベート アクセサーを作成する必要があります。内部的には、反射で機能すると思います。生成されたコードを見てください。
直接テストしません。それが定義されているクラスを通じてテストされます。
そして、この質問タグが現在暗示しているように、TDD を適用する場合、内部クラスの呼び出しを記述したばかりのテストは何ですか? あなたが取り組んでいるクラスが私的に所有している標準クラスではないということですか?
リフレクションを使用して内部クラスのメソッドをロードおよび呼び出すヘルパー クラスを使用しました。DEBUG シンボルを使用して、コンパイル時にアクセシビリティを変更することもできます。
#if DEBUG
public
#else
internal
#endif
class MyInternalClass
{
...
}
ただし、Esko Luontola の回答は、最も重要なのは機能またはビジネス要件であるため、より正確です。重要なリスク領域をテストするよりも、コード カバレッジに集中しすぎがちです。
http://msdn.microsoft.com/en-us/library/bb385974.aspxから詳細な説明を参照してください。