单元测试,以检测C#中添加的新字段/属性

本文关键字:字段 属性 新字段 检测 添加 单元测试 | 更新日期: 2023-09-27 18:20:36

假设我有一个具有3个字段/属性的类。假设我的所有单元测试现在都通过了使用这个类的项目。如果我向这个类(第4个字段)添加一个新属性,那么我希望一个单元测试失败。我该如何编写这样一个可以检测属性添加的单元测试?

单元测试,以检测C#中添加的新字段/属性

下面是一个使用反射的示例。

void TheUnitTest()
{
    var p = new Person();
    Assert.That(p.GetType().GetProperties().Count() == 3);
}
public class Person { public String Name{ get; set; } public int age { get; set; } public String job { get; set; } }

你不想那样做。单元测试的目的是验证功能,而不是实现。在类上添加属性并不是为了好玩——添加它是为了实现一些新功能的一部分,然后测试该功能。

如果您添加了一个属性,并且它对您的应用程序没有功能上的差异,那么这也没关系。你不需要测试它,它不会改变你的代码库的工作方式。您将通过功能测试来测试属性。

我不确定你为什么要这样做,但这里有一些建议。

您可以使用FluentAssertions库对类型、方法和属性进行断言。您可以枚举对象的属性,并断言每个属性的名称都在已知属性的列表中。

如果你试图测试的是,你已经将业务对象的所有属性映射到DTO对象(这几乎是我能想到做这种事情的唯一原因),那么考虑使用AutoMapper,而不是滚动你自己的代码——它有一种方法来测试两个对象之间是否存在匹配的属性。