ビジネスレイヤーを分離したプロジェクトがあります。ソリューションでは、分離されたプロジェクト内の多数のサービス (クラス) のようなものです。また、ninject を使用して依存関係を管理します。ビジネス層プロジェクトのすべてのクラスは内部であり、インターフェイスを介して «別の世界» と通信します。テストを含む新しいプロジェクトを作成する場合、内部クラスは表示されません (ただし、ハックを実行して、AsseblyInfo で Internal を Public に宣言できます)。
私が本当に知る必要があるのは、テストに必要なものです:
すべてのテスト環境を作成し、作成されたインターフェイスを介してのみテストできます (「明確な」DAL はありません。linq2sql を使用していますが、モックされる可能性があります) 内部の BisLayer 構造とテストについて何も知らないため、この方法は良さそうです。 «contract» 機能のみ。しかし、悪い面は、システムには多くのオプション、設定、およびバインディングがあり、考えられるすべてのバリアントをチェックすることは不可能またはかなり難しいように思われることです。
同じプロジェクトにテストを配置するか、属性を設定して内部をパブリックとして表示することができるため、内部クラスをテストできます。ほとんどすべてをテストできるので良いのですが、バインディングを制御するのは難しいです.Ninjectでそれを行うのはいいでしょうし、具体的なテストで必要なバインディングのみをオーバーライドします. また、同じインターフェースを実装する (そして同様のことを行う) クラスをテストする方法も明確ではありません。Cache の実装はほとんどありませんが、各実装はデータを異なる場所 (mssql、key-value db、asp キャッシュなど) に保持するため、各実装のテストは実際には同じになります。