由于NHibernate中的延迟加载,我必须确保我的域的每个属性都是虚拟的。 我想通过编写一个单元测试来检查每个反射,即特定命名空间中所有类的所有公共属性都是虚拟的。虚拟属性的单元测试
我该怎么做?
在此先感谢Tobi
由于NHibernate中的延迟加载,我必须确保我的域的每个属性都是虚拟的。 我想通过编写一个单元测试来检查每个反射,即特定命名空间中所有类的所有公共属性都是虚拟的。虚拟属性的单元测试
我该怎么做?
在此先感谢Tobi
我已经改编了一个类似的案例我有一个代码,这应该让你去;
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;
}
你会以这种方式使用此:
var valid = Test<User>();
为什么?这是你建立会话工厂时完成的。如果无法创建会话工厂,则应用程序不会(不应该)启动。如果你真的想要一个测试,只需建立一个内存中的sqlite数据库的会话工厂。如果没有抛出异常,则所有实体都具有虚拟成员。 – 2011-12-20 16:31:06
没有必要,只需建立会话工厂。如果属性不是虚拟配置,会抛出详细的消息,告诉你什么是错的。
什么是会话工厂? – SvenG 2011-12-20 15:17:44
它是NH的核心。这是你如何打开一个会话。你有配置,会话工厂和会话。配置建立会话工厂(singleton),工厂创建会话(transient) – 2011-12-20 16:27:57
你尝试过什么?你知道如何使用反射来获取所有的域类和属性吗? – 2011-12-20 15:11:34
@WouterdeKort其实我现在不知道。我在反思方面玩过,但不是那样。 – Tobias 2011-12-20 15:12:57