NUnitを使用してプライベートメソッドと内部クラスをテストするにはどうすればよいですか?NUnitでプライベートメソッドと内部クラスをテストしますか?
12
A
答えて
4
私は通常そうしません。 プライベートメソッドと内部クラスを使用するパブリックメソッドを徹底的にテストすると、公開されていないプライベート機能の全範囲をテストできるはずです。
0
テスト固有の派生クラスを使用して、それらを呼び出す方法を公開する必要があります。
30
プライベートメソッド:
あなたは非パブリックメソッドをテストしようとしている場合、それは通常、あなたはそれが間違ってやっていることを意味します。
テストする機能はありますが、クラスに公開したくない場合は、コードが何かを伝えようとしています。あなたのクラスにはおそらくあまりにも多くの責任があります。プライベート機能を新しいクラスに抽出し、新しいクラスのテストを作成し、古いクラスを新しいクラスのプライベートインスタンスにすることを真剣に検討する必要があります。
内部クラス:
この1つはあなたが再利用する他の人のためのクラスライブラリを書いている場合は特に、より有効です。あなたは、一般的な目的のために設計されていないが、単体テストを書くクラスを持っているかもしれません。
この場合、 InternalsVisibleToAttributeをご覧ください。
2
私がこれを処理する方法は、すべての方法を公開することです。私はそれが悪いことを知っているが、私と一緒に瞬間を耐える。
IoCを使用する場合、ロジックを持つすべてのクラスのインターフェイスがあります。 基本的に、実際の実装ではなく、インタフェースに対してコードを作成します。これは、すべてのメソッドをpublicとマークし、そのクラスのすべてのメソッドの単体テストを書くことができる点を除けば、クラスの使用方法には影響しません。
関連する問題
- 1. 内部クラスからプライベートメソッドにアクセスできませんか?
- 2. なぜ内部クラスでプライベートメソッドにアクセスできるのですか?
- 3. 内部クラスをテストする
- 4. 派生クラスは、内部クラスのフレンドである親クラスの保護された内部クラスのプライベートメソッドにアクセスできますか?このクラスを考慮
- 5. NUnitテストで外部アンマネージドDLLをアンロード
- 6. NUnitを停止してクラス内でテストを実行する方法
- 7. (NUnit)同じブラウザウィンドウを使用して同じクラス内でテストを実行する
- 8. NUnitでアセンブリ内のテストが見つかりません
- 9. 他のプライベートメソッド内からself.xxx()を使用してプライベートメソッドxxxを呼び出すと、 "
- 10. クラス<<内部でクラス定義は何をしますか?
- 11. EasyMockを使用して内部クラスをテストする方法
- 12. 外部クラスを静的として定義し、内部静的クラスを囲むことはできますか?
- 13. 内部クラスとしてバインディングコンバータ?
- 14. Javassistを使用して親クラスのプライベートメソッドをインスツルメントしますか?
- 15. NUnitテストはSerializationExceptionで終了しますが、NUnitで実行されないとうまく動作します
- 16. Javaの内部クラスとローカル内部クラスの違いは何ですか?
- 17. nunit-consoleはテストフィクスチャ内のすべてのテスト名を表示できますか?
- 18. なぜ内部クラスは別の内部クラスのプライベートメンバーにアクセスできますか?
- 19. Molesと内部クラス
- 20. Visual Studio内からNUnitテストを実行するには?
- 21. GallioでNUnitテストを実行
- 22. Pythonスタイルの質問:クラスを内部クラスとしてサポートしていますか?
- 23. 私は外部からC++でプライベートメソッドにアクセスできますか?
- 24. Response.Cache.VaryByHeaderのNunitテスト
- 25. publicな内部クラスをテストする必要がありますか?
- 26. 単体テストWP7のプライベートメソッド
- 27. Java - メソッドまたは内部クラスまたはクラスとして?
- 28. nunitテストをパラメータ化することは可能ですか
- 29. マウスを使用せずにNUnitテストを実行しますか?
- 30. ユニット内部コンストラクタを持つクラスをテストする
また、InternalsVisibleToを使用して、テストアセンブリでのみ使用されるコンストラクタ/メソッドを公開し、クライアントコードから非表示にするコンストラクタ/メソッドを公開することもできます。 – jlafay