TDD - 我应该为此功能编写哪些测试?

Che*_*tan 4 testing tdd unit-testing function

我已经读过,我应该首先编写简单的基本测试,然后逐渐转向更难的测试.我应该为以下功能编写哪些测试(按顺序)?

功能 List.syncWithList(lst)

  • 应该在列表中添加任何不在列表中但位于列表中的项目 lst
  • 应删除列表中不存在的任何项目 lst
  • 应该替换列表中具有不同版本标签的任何项目 lst
  • 不应该替换列表中与版本标签相同的任何项目 lst

pax*_*blo 8

基本的测试列表.你刚刚把它们提供给我们.至少,您应该测试是否已满足每个功能要求(例如,您在问题中给出的四个要点).

除此之外还有边缘情况,例如空列表(在一侧和两侧),相同的列表等等.

最简单的方法是添加以下内容:

  • 双方空单.
  • 相同的清单.
  • 空左列表,其中包含要添加的单元素右侧列表.
  • 单元素左侧列表,其中包含要删除的空右侧列表.
  • 之前的两个测试,但一方面有五个元素列表.
  • 替换单元素左侧列表中的一个元素.
  • 替换五元素左列表中的一个元素.
  • 替换五元素左列表中的三个元素.
  • 检查相同版本标签上是否没有替换.

然后在解决个别问题时添加更多内容.

我不能强调这一点:自动化测试!只需按下按钮并查看结果,您就会发现测试更容易.每当你发现一个bug时,添加一个测试,它会把这个bug发现到上面的测试套件中,然后按下按钮进行验证.

我们将测试归结为精美的艺术品.使用一个命令,可以实现整个流程,吹走数据库,使用已知数据加载数据库,运行测试,将输出与先前成功的测试进行比较等等.

如果我们在做出改变时必须手动完成所有操作,我们很快就会完全抛弃这个想法.通过自动化一切,测试是轻而易举的.

  • 这是一个很好的答案.我想补充一点,提问者所写的要点实际上是好的测试名称.您的测试名称应该作为类的功能及其预期行为的描述. (3认同)