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 编写代码是否是正确的方法?