理解"测试优先"和"测试驱动"之间的区别

Nei*_*ell 6 tdd unit-testing test-first

我过去曾经谈过这个话题,我想我可能知道答案,但我还是没能说清楚.

这是我认为我知道的:

我怀疑你是测试优先而不是测试驱动,如果你在编写测试之前已经掌握了事情将如何工作的想法,所以你先编写测试,然后在实现你的想法之前测试你的想法.即你对实现的想法是第一位的,并推动测试的样子.

如果您是测试驱动的,那么您正试图通过测试来推动实现的样子.您为自己想要的某些行为编写了一个测试,而不是对实现的先入为主的想法,因此您必须在"重构"阶段提出一个实现才能很好地通过测试.

我的问题是:

  1. 我理解正确吗?
  2. 如果大多数开发人员在他们甚至伸手去拿键盘之前立即开始在他们的脑海中开始探索解决方案,那么如何从测试第一的思维模式进入测试驱动的思维模式?

Sar*_*ica 0

在实现之前编写一组测试允许您对公共方法进行单元测试。因此,测试中隐藏了正在发生的事情的真正实现。您正在编码抽象而不是实现,这是一件好事(TM)。您正在接受抽象术语和概念——测试将形成您的公共方法。因此,测试驱动意味着您的测试将驱动 API。相反的就是所谓的测试优先。