我正在学习单元测试。我有一个“领域对象”,除了保持状态(即没有任何业务逻辑的 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); 

这是有道理的,因为您真的只关心它们设置为某个默认值,而不是它们是特定值。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!