在测试驱动开发中,您是先编写每个可能的测试,然后编写代码吗?

Jas*_*son 3 tdd

在进行测试驱动开发时,我一直习惯于先为新功能编写第一个单元测试,然后编写该功能的代码.如果我有其他测试要编写以涵盖所有场景,我通常在编写代码后编写它们.这被认为是不好的形式吗?在编写代码之前,我是否应该首先尝试为一项功能编写所有可能的测试?

Jos*_*eph 12

为了正确执行TDD,您始终先编写测试,然后再编写功能.

除此之外,我会一次采用一个场景,不要编写20个测试,然后为这20个测试编写代码.写一个测试,红色/绿色标记,然后继续下一个测试.这确保您也在执行TDD的核心原则之一,即尽可能简单的实现,以满足您的所有需求/方案.


Joh*_*lph 6

实际上不,我经常发现"在旅途中"的功能.让我再解释一下"不":

我通常开始为高级功能编写测试用例,定义其接口.之后,我通常将此测试设置为忽略并继续为每个接口功能编写测试.我的周期如下:

  1. 故事A的集成测试(高级API)
  2. 在Integration Test中调用的方法xyz的写单元测试
  3. 实施方法(红/绿/重构)
  4. 重复2 + 3直到积分测试通过.

在这样做的同时,我经常意识到我在主测试中忘记了一些小功能.然后,我通常会花时间回顾客户的要求.如果它合适,我回去为它添加一个测试,设置为忽略,因为我首先要完成我的开始.

有时我看到有机会进行重构.我通常完成一个实现,直到我达到提交点然后进行重构,但有时我会隐藏我的更改,然后返回并首先进行重构(包括新的测试,如果有必要).这个工作流程由Mercurial MQ提供.