TDD最佳实践表示新测试应该失败。不过,我认为有必要进行一次测试,尽管它刚刚写入时不会失败。编写不首先失败的测试
样品的工作流程:
- 写测试,检查结束日期是否开始日期之前进入 - 测试失败;
- 编写代码 - 测试通过;
bool Validate(Condition condition)
{
if (condition.EndDate <= condition.StartDate)
{
return false;
}
return true;
}
3.重构 - 测试仍然通过。
bool Validate(Condition condition)
{
return (condition.EndDate > condition.StartDate);
}
步骤3中我看到,如果我不是重构的条件后,我可以添加一个新的测试,检查该方法,如果开始日期在结束日期之前返回true。但是,如果我先进行重构,那么写这样的测试就意味着它会立即通过。对我来说,它看起来像测试可能会使代码更健壮。
为什么要写这样的测试是一个坏主意/根据TDD不是一个好主意?
编辑:我现在在想,或许在实现中写作return true;
可能不是一个好主意,我应该抛出一个NotImplementedException
。根据TDD编写代码是否是正确的方法?
有关此问题的思考,我意识到,我违反写作“刚刚够”的原则,走了一步,没有真正思考它。在我写任何其他测试之前,'return true;'应该已经被单元测试覆盖了。虽然这个例子已经完成,但我不止一次遇到过类似的问题。在编写测试时,我会尽量多注意哪些代码是正确的。我相信,在我的例子情况下,即使测试会通过,我还是应该把它写,否则'返回true;'不包括在内。 – 2013-04-22 16:49:23