我见过人们为那些应该被视为理所当然的事情编写单元测试。 E.g:
class Employee
{
public int Id { get; set; }
public string Name { get; set; }
//.....
}
单元测试:
Assert.AreEqual(new Employee().Id, 0);
似乎浪费了大量的时间和资源,但是有些人会写这样的测试。我甚至在微软的一些样本中看到了它。
我错过了什么吗?
答案 0 :(得分:3)
它们应该针对行为,所以默认为0的测试是非常没有意义的,除非有一个理由需要它以这种方式运行,例如堆栈开始为空。
答案 1 :(得分:2)
单元测试的一大好处是能够快速检测回归。如果开发人员在轨道上出现多年并修改Id getter函数以返回除Id之外的其他内容或修改默认构造函数以将Id设置为非零值,则该测试将失败。调试比在轨道上发生几周的一些模糊错误要容易得多,因为有代码假设新员工ID的初始值为0。
答案 2 :(得分:1)
单位测试绝不是浪费。如果另一个程序员决定编辑Id的getter代码怎么办?除非执行单元测试并且它向您显示错误,否则您永远不会轻易找到它。