代码之家  ›  专栏  ›  技术社区  ›  Chetan

TDD-我应该为这个函数编写什么测试?

  •  4
  • Chetan  · 技术社区  · 14 年前

    我已经读过了,我应该先写简单的基本测试,然后逐步向更难的测试前进。我应该为以下函数编写什么测试(按顺序)?

    功能 List.syncWithList(lst)

    • 应将不在列表中但在列表中的任何项添加到列表中 lst
    • 应删除列表中不在 LST
    • 应替换列表中任何具有与中不同版本标记的项 LST
    • 不应替换列表中与中具有相同版本标记的任何项 LST
    1 回复  |  直到 14 年前
        1
  •  8
  •   paxdiablo    14 年前

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

    另外还有一些边缘案例,比如空列表(一方和双方)、相同的列表等等。

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

    • 两边的空列表。
    • 相同的列表。
    • 空左列表,并添加一个元素右列表。
    • 一个元素左列表,要删除一个空的右列表。
    • 前两个测试,但一侧有五个元素列表。
    • 替换一个元素左列表中的一个元素。
    • 替换左五行列表中的一个元素。
    • 替换左表中的三个元素。
    • 正在检查是否没有对相同版本标记进行替换。

    然后在处理个别问题时添加更多内容。

    我不能再强调这一点: 自动化测试! 你会发现,只要按下一个按钮并查看结果,测试就容易得多。每次攻击一个bug时,将一个本可以捕获该bug的测试添加到上面的测试套件中,然后按下按钮进行验证。

    我们把测试归结为一门艺术。有了一个命令,就可以完成一个完整的过程,这个过程会吹走数据库,用已知的数据加载它们,运行我们的测试,将输出与以前成功的测试进行比较,等等。

    如果每次我们做出改变时都必须手动完成所有这些工作,那么我们很快就会放弃整个想法。通过自动化一切,测试是轻而易举的。