作为对这个答案评论讨论的跟进,TDD测试是否总是要先失败?
考虑以下示例。如果我正在编写LinkedHashSet的实现,并且一个测试测试了在插入重复项后,原始项与插入之前相同的迭代顺序,我可能想要添加一个单独的测试,以确保重复项根本不在集合中。
第一个测试将首先被观察到失败,然后再进行实现。
问题在于很可能实现使第一个测试通过所使用的数据存储方式与第二个测试已经通过的副作用不同。
我认为看到测试失败的主要目的是确保测试是一个好的测试(很多次我写了一个我认为会失败但实际上没有因为测试写错了)。但是,如果您确信您编写的测试确实测试了某些内容,那么有必要确保您不会在以后破坏该行为,这难道不是有价值的吗?
考虑以下示例。如果我正在编写LinkedHashSet的实现,并且一个测试测试了在插入重复项后,原始项与插入之前相同的迭代顺序,我可能想要添加一个单独的测试,以确保重复项根本不在集合中。
第一个测试将首先被观察到失败,然后再进行实现。
问题在于很可能实现使第一个测试通过所使用的数据存储方式与第二个测试已经通过的副作用不同。
我认为看到测试失败的主要目的是确保测试是一个好的测试(很多次我写了一个我认为会失败但实际上没有因为测试写错了)。但是,如果您确信您编写的测试确实测试了某些内容,那么有必要确保您不会在以后破坏该行为,这难道不是有价值的吗?