在过去数年中,“测试为大”的措辞喧嚣尘上,也容不得其它的方式。当时我也被吸入到这个原教旨主义的漩涡中,痛苦于没有遵循真正的福音。……在公开场合,最好情况下我只是提及不要“测试为大”,而最坏情况下,我会继续坚持这种做法是“正确的方式”。
我现在很后悔这样。
可能出于要打破业界缺乏自动回归测试的遗憾,的确有必要使用“测试为大”作为一种反直觉的冲击。……但是我早已跳出了设计教条。我建议大家也认真查看一下这一方法对系统设计整体性的所作所为(本文原作者Gilad David Maayan对此句话加了重点)。
目前对TDD体验的盲从导致了测试主要集中于单元测试。……我并不认为这是健康的。测试驱动单元形成了过于复杂的网络,其中充斥着中间对象和间接结果。……它所产生的架构中具有一些十分可怕的怪物,是一个由服务对象、命令模式以及甚至更糟的对象所组成的密集丛林。
很高兴看到不少企业正从以TDD为测试模式中跳出,并转向BDD。Atlassian的Heather Krebsbach在2016年就明确写道:
“测试为大”的方法被称为是TDD,它正日益得到广泛使用。但是我们很快就认识到,TDD并未给予我们对系统中大多数重要业务案例所需的可见性和覆盖率。因此产生了TDD的一个变种,称为BDD。BDD聚焦于系统的行为,而非技术方面。
来源: http://www.infoq.com/cn/articles/tdd-ocd