单元测试 - 无用的测试是什么?

时间:2011-02-16 00:53:49

标签: unit-testing nunit

我见过人们为那些应该被视为理所当然的事情编写单元测试。 E.g:

class Employee
{ 
   public int Id { get; set; } 
   public string Name { get; set; } 
   //.....
}

单元测试:

Assert.AreEqual(new Employee().Id, 0);

似乎浪费了大量的时间和资源,但是有些人会写这样的测试。我甚至在微软的一些样本中看到了它。

我错过了什么吗?

3 个答案:

答案 0 :(得分:3)

它们应该针对行为,所以默认为0的测试是非常没有意义的,除非有一个理由需要它以这种方式运行,例如堆栈开始为空。

答案 1 :(得分:2)

单元测试的一大好处是能够快速检测回归。如果开发人员在轨道上出现多年并修改Id getter函数以返回除Id之外的其他内容或修改默认构造函数以将Id设置为非零值,则该测试将失败。调试比在轨道上发生几周的一些模糊错误要容易得多,因为有代码假设新员工ID的初始值为0。

答案 2 :(得分:1)

单位测试绝不是浪费。如果另一个程序员决定编辑Id的getter代码怎么办?除非执行单元测试并且它向您显示错误,否则您永远不会轻易找到它。