我正在学习单元测试。我有一个“领域对象”,除了保持状态(即没有任何业务逻辑的 Employee)之外没有做太多事情。它有一个方法SetDefaults(),它只是用合理的值填充它的状态。一个简单的方法。
但是当我对这个方法进行单元测试时,我能想到的就是运行这个方法,然后检查每个字段是否都是它应该是的。喜欢(在 C# 中):
[TestMethod()]
public void SetDefaultsTest()
{
Employee target = new Employee();
employee.SetDefaults();
Assert.AreEqual(employee.Name, "New Employee");
Assert.AreEqual(employee.Age, 30);
// etc.
}
在我的测试中复制 SetDefaults() 的全部功能感觉不对。我应该让这个方法未经测试吗?问题是我想要一个测试来确保当新属性被添加到类时,它们也被添加到 SetDefaults() 方法。
请您参考如下方法:
琐碎的 getter 和 setter 有时没有为它们编写单元测试。如果这就是 SetDefaults() 所做的全部,跳过它可能不会有什么坏处。
不过,您需要考虑测试的一件事是,在调用 SetDefaults() 之后,employee 实例的所有设置属性都不为 null:
var nonNullProperties = new object[] { employee.Name, employee.Age, ... };
foreach (var property in nonNullProperties)
Assert.IsNotNull(property);
这是有道理的,因为您真的只关心它们被设置为某个默认值,而不是它们是特定值。




