2011-01-18 8 views
1

DIコンテナとUnityを使って私を悩ませていることは、それが私が使っているものだからです。私がタイプを登録することを忘れた場合、後でその忘れられた登録を必要とするタイプを解決しようとすると、プログラムはクラッシュします。私は古いことを明示的に呼び出して新しい、コンパイラは私のためにこれをチェックするが、今は強制的なチェックはありません。Test Unityランタイムコンフィグレーション

解決の呼び出しのほとんどは、プログラムの初期化中に行われるので、問題はそれほど大きくありません。 しかし、私はまだそれをテストしたいと思っています。コンテナ登録をセットアップし、次にアセンブリをスキャンしてcontainer.resolveを呼び出すことが考えられます。

私はそれのようなものを見たことがないので、間違った道を下っていますか?代わりにユニット/統合テストを行うべきですか?

答えて

2

一部のコンテナ(StructureMap IIRC)には、自己診断を呼び出すためのメソッドがありますが、AFAIR Unityにはそのようなメソッドはありません。

私はいつも自己診断法が大きな価値を提供しているかどうか疑問に思ってきました。すでに登録したコンポーネントはの内部で一貫性がありますですが、最初に設定されていなかったものをコンテナに依頼することができます。 Foo、Bar、Bazが設定されているとしましょう。それらは一貫しているかもしれませんが、あなたがQuxを求めるならどうなりますか?

自己診断プログラムは、このようなシナリオを決して捉えません。

適切な入力をすべて解決しようとするの統合テストの組み合わせをお勧めします。 Register Resolve Release patternに従う場合、Resolveメソッドへの入力セットは、特定のアプリケーションに対して明確に定義されている必要があります。