语言无关 – TDD测试是否应该首先失败?

作为 this answer评论中的讨论的跟随者,TDD测试是否应该首先失败?

请考虑以下示例.如果我正在编写LinkedHashSet的实现和一个测试测试,在插入副本之后,原始版本与插入之前的迭代顺序相同,我可能想要添加一个单独的测试,副本根本不在集合中.

第一次测试将首先失败,然后实施.

问题是,使第一次测试通过的实现很可能使用不同的集合实现来存储数据,因此正如第二次测试已经通过的副作用一样.

我认为看到测试失败的主要目的是确保测试是一个很好的测试(很多次我写了一个测试,我认为会失败,但没有,因为测试写错了).但是,如果您确信您所编写的测试确实测试了某些内容,那么必须确保您以后不会破坏该行为并不值得吗?

当然它很有价值,因为它是有用的 regression test.在我看来,回归测试比测试新开发的代码更重要.

要说他们必须始终首先失败就是要超越实际的规则.

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...