2009-06-10 24 views

答えて

4

私は通常そうしません。 プライベートメソッドと内部クラスを使用するパブリックメソッドを徹底的にテストすると、公開されていないプライベート機能の全範囲をテストできるはずです。

0

テスト固有の派生クラスを使用して、それらを呼び出す方法を公開する必要があります。

30

プライベートメソッド:

あなたは非パブリックメソッドをテストしようとしている場合、それは通常、あなたはそれが間違ってやっていることを意味します。

テストする機能はありますが、クラスに公開したくない場合は、コードが何かを伝えようとしています。あなたのクラスにはおそらくあまりにも多くの責任があります。プライベート機能を新しいクラスに抽出し、新しいクラスのテストを作成し、古いクラスを新しいクラスのプライベートインスタンスにすることを真剣に検討する必要があります。

内部クラス:

この1つはあなたが再利用する他の人のためのクラスライブラリを書いている場合は特に、より有効です。あなたは、一般的な目的のために設計されていないが、単体テストを書くクラスを持っているかもしれません。

この場合、 InternalsVisibleToAttributeをご覧ください。

+3

また、InternalsVisibleToを使用して、テストアセンブリでのみ使用されるコンストラクタ/メソッドを公開し、クライアントコードから非表示にするコンストラクタ/メソッドを公開することもできます。 – jlafay

2

私がこれを処理する方法は、すべての方法を公開することです。私はそれが悪いことを知っているが、私と一緒に瞬間を耐える。

IoCを使用する場合、ロジックを持つすべてのクラスのインターフェイスがあります。 基本的に、実際の実装ではなく、インタフェースに対してコードを作成します。これは、すべてのメソッドをpublicとマークし、そのクラスのすべてのメソッドの単体テストを書くことができる点を除けば、クラスの使用方法には影響しません。

関連する問題