使用C#和反射的类的单元测试属性

时间:2018-11-20 09:37:00

标签: c# unit-testing

我在使用C#进行单元测试时遇到了一些困难。

假设我有

class Dummy{
    TypeA Foo {get; set;}
    TypeB Bar {get; set;}
}

和测试方法

[TestMethod]
public void TestStuff()
{
    Type type = typeof(Dummy);
    PropertyInfo[] properties = type.GetProperties();

    foreach(PropertyInfo property in properties)
    {
        string result= MyStaticClass.ProcessProperty(property.Name);
        Assert.IsFalse(string.IsNullOrWhiteSpace(result));
    }
}

测试运行正常,但是当测试失败时,我不知道是哪个属性导致了问题。

在其他测试方法中,我使用[DataTestMethod][DataRow(stuff)]来提供单个输入并知道是什么导致测试失败。

有没有办法使用反射来做类似的事情?

我是否想到了错误的单元测试?

我想使用这种方法检查一致性,这是完全错误的吗?

1 个答案:

答案 0 :(得分:3)

Assert具有许多有趣的属性参数!

您可以执行以下操作:

Assert.IsFalse(string.IsNullOrWhiteSpace(result), $"{property.Name} is null");