2011-12-20 15 views
0

NHibernateでLazy-Loadingのため、私のドメインのすべてのプロパティが仮想であることを保証する必要があります。 私は、特定の名前空間内のすべてのクラスのすべてのパブリックプロパティが仮想であることをリフレクションごとにチェックする単体テストを書くことでこれを行いたいと思います。仮想プロパティのユニットテスト

どうすればいいですか?

ありがとうございましたTobi

+0

あなたは何を試してみました?あなたはこの方法でこれを使用すると思い

public static bool Test<T>() { var valid = true; foreach (var property in typeof(T).GetProperties()) { var accessor = property.GetAccessors()[0]; if (accessor.IsVirtual) continue; Console.WriteLine("Member " + typeof(T).Name + "." + property.Name + " is not virtual"); valid = false; } return valid; } 

リフレクションを使用してすべてのドメインクラスとプロパティを取得する方法を知っていますか? –

+0

@WouterdeKort実際、私は今は分かりません。私は反射ではなくそのように遊んだ。 – Tobias

答えて

1

私が持っている同様のケースのコードを修正しました。

var valid = Test<User>(); 
+0

なぜですか?これは、セッションファクトリを構築するときに実行されます。セッションファクトリを作成できない場合、アプリケーションは起動しないでください。本当にテストが必要な場合は、メモリ内のsqliteデータベースに対してセッションファクトリを作成してください。例外がスローされない場合、すべてのエンティティに仮想メンバーがあります。 –

3

必要はなく、セッションファクトリを構築するだけです。プロパティが仮想コンフィグレーションでない場合、何が間違っているかを示す詳細なメッセージがスローされます。

+0

セッションファクトリーとは何ですか? – SvenG

+0

それはNHの核心です。それはあなたがセッションを開く方法です。設定、セッションファクトリ、セッションがあります。構成セッションファクトリ(シングルトン)を構築する、工場でセッションを作成する(一時的) –