单元测试虚拟属性

时间:2011-12-20 15:09:15

标签: c# unit-testing reflection

由于NHibernate中的Lazy-Loading,我必须确保我的域的每个属性都是虚拟的。 我想通过在每次反射中编写单元测试检查来实现这一点,即特定命名空间中所有类的所有公共属性都是虚拟的。

我该怎么做?

先谢谢Tobi

2 个答案:

答案 0 :(得分:3)

没有必要,只需构建会话工厂。如果属性不是虚拟配置,则会抛出一条详细的消息,告诉你出了什么问题。

答案 1 :(得分:1)

我从一个类似的案例中修改了一段代码,这应该让你顺利;

    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>();