我正在编写单元测试。在这个特定的一个我使用无参数构造函数实例化一个对象。使用该构造函数进行实例化时,不会设置任何属性。
然后,作为测试的一部分,我希望“循环”通过属性并声明它们是“null”,“0”或“false”(这将是正确的状态)。
我知道这听起来像是一件蠢事,但如果我能做到这一点,那么我就可以为其他一切编写更有效和可读的测试。
我知道我可以“循环”通过“类型”的属性,但这不是“类型”的实例化对象。这是一个“类型”对象。
在我看来,应该(但显然不是)以下内容:
var target = new MyObject();
foreach(var property in target.GetProperties())
{
Assert.IsNull(property);
}
任何?
答案 0 :(得分:3)
循环遍历该类型的属性,然后根据类型的实例找到每个属性的值:
var target = new MyObject();
foreach(var property in target.GetType().GetProperties())
{
Type propertyType = property.PropertyType;
object actual = property.GetValue(target, null);
object expected = propertyType.IsValueType
? Activator.CreateInstance(propertyType)
: null;
Assert.AreEqual(expected, actual);
}