2009-03-03 2 views

答えて

15

トップレベルのクラスの外部インターフェイスの動作を指定するテストを記述します。そのクラスがその動作を実装するために内部クラスを使用するかどうかは、クラスの実装の詳細であり、テストではそのことについて何も知る必要はありません。

内部クラスをトップレベルクラスのインターフェイスで適切にテストできない場合は、内部クラスを移動して、新しいトップレベルクラスとして直接テストすることをお勧めします。内部クラスをテストしたいのは、内部クラスが最上位クラスになるためには十分に重要であるという匂いです。

1

ユニットテストにMS Visual Studioを使用する場合は、単にprivate Accessorを作成する必要があります。内部的には、それは私の思うような反射で動作します。生成されたコードを見てみましょう。

2

あなたは直接テストしません。クラスが定義されているクラスを通してテストされます。

TDDを適用すると、この質問タグが現在暗示しているように、内部クラスの呼び出しを書くだけのテストは何ですか?私はそれがあなたが取り組んでいるクラスによって個人的に所有されている標準クラスではないことを意味しますか?

1

リフレクションを使用して内部クラスのメソッドをロードして呼び出すヘルパークラスを使用しました。最も重要な機能やビジネス要件であるしかしエスコLuontolaの答えは、より正確であるDEBUGシンボル例えば

#if DEBUG 
public 
#else 
internal 
#endif 
    class MyInternalClass 
{ 
    ... 
} 

を使用して、コンパイル時に、アクセシビリティを変更することも可能です。重要なリスク領域をテストするのではなく、コードカバレッジに集中するのは簡単です。

5

私はそれをお勧めしますが、InternalsVisibleToAttributeも使用できます。

+0

から詳細な説明を参照してください? http://stackoverflow.com/questions/15440935/how-to-test-internal-class-library –

+0

@トーマス:彼の答えはエスコの状態とまったく同じです。間接的に内部APIをテストするか、内部APIを公開して直接テストします。 –

関連する問題