【问题标题】:TDD - What tests should I write for this function?TDD - 我应该为此功能编写哪些测试?
【发布时间】:2010-07-12 04:39:21
【问题描述】:

我读到我应该先编写简单的基本测试,然后逐渐提高到更难的测试。我应该为以下函数编写哪些测试(按顺序)?

函数List.syncWithList(lst)

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

【问题讨论】:

  • 您提供了要测试的内容列表。你还想要什么?

标签: unit-testing function tdd testing


【解决方案1】:

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

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

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

  • 两边都是空列表。
  • 相同的列表。
  • 带有要添加的单元素右列表的空左列表。
  • 一个元素的左列表和一个空的右列表要删除。
  • 前两个测试,但一侧包含五元素列表。
  • 替换一个元素左列表中的一个元素。
  • 替换五元素左列表中的一个元素。
  • 替换五元素左列表中的三个元素。
  • 检查没有对相同版本标签进行替换。

然后在遇到个别问题时添加更多内容。

我再怎么强调也不为过:自动化您的测试!当您只需按下一个按钮并查看结果时,您会发现测试要容易得多。每次遇到错误时,将可以捕获该错误的测试添加到上面的测试套件中,然后按按钮进行验证。

我们对美术进行了测试。使用一个命令,整个过程就可以完成,它会清除数据库、加载已知数据、运行我们的测试、将输出与之前成功的测试进行比较等等。

如果我们在进行更改时必须手动完成所有这些操作,我们很快就会放弃整个想法。通过自动化一切,测试变得轻而易举。

【讨论】:

  • 这是一个很好的答案。我只想补充一点,提问者写的要点实际上是很好的测试名称。您的测试名称应该是对类的作用及其预期行为的描述。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多