首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TDD中,我应该为一个方法编写多少个测试?

在TDD中,我应该为一个方法编写多少个测试?
EN

Stack Overflow用户
提问于 2011-05-02 23:30:32
回答 5查看 1.1K关注 0票数 3

我想要实现一个方法,它告诉我坐标(x和y)是否超出了界限。我应该写多少个测试?对我来说似乎是5:

  1. 检验负x超过束缚
  2. 检验阳性x超过束缚
  3. 检验负y超过束缚
  4. 测试阳性y超过界限

<代码>H19测试范围<代码>H 210<代码>G 211

我是否创建了多余的测试,对于我想要实现的每个方法,我应该只有一个测试吗?

EN

回答 5

Stack Overflow用户

发布于 2011-05-02 23:41:28

这通常不是我们在TDD中思考的方式。更多的是:“接下来我需要什么测试?”所以,通常情况下,我会从(伪码)开始

代码语言:javascript
复制
given: bounds (5, 10, 15, 20)
assert: outOfBounds(0, 0)

然后让这一切过去

代码语言:javascript
复制
outOfBounds(x, y): return true

但我知道这还不是真的,所以我知道我需要另一个测试。

代码语言:javascript
复制
assert: !outOfBounds(5, 10)

所以现在失败了。最简单的事情是什么能起作用?也许吧

代码语言:javascript
复制
outOfBounds(x, y): return x == 0

我当然知道我还在装,所以我需要再做一次测试。这件事一直持续下去,直到我不再假装了。也许,在这种情况下,我会用你的“多少个测试”问题来处理同样的5个案例--但也许我会意识到,我会更快地完成任务。

一个更好的问题是:,我需要另一个测试吗?

票数 9
EN

Stack Overflow用户

发布于 2011-05-02 23:38:05

您需要编写足够的测试来掩盖您期望从方法中看到的行为--不多,也不少。

实际上,如果您正在实践TDD (如标题所示),那么您的方法的行为应该会被您编写的测试排除在外,而不是相反--所以您已经为您编写的通过测试的功能找到了最佳测试数量。(虽然在排除了愉快路径功能之后,人们通常会想到边缘案例和失败案例,但我猜这里发生了什么呢?)

对于这个具体的情况,您在这里描述的五个测试在我看来是非常明智的。

票数 4
EN

Stack Overflow用户

发布于 2011-05-02 23:49:52

一位前雇主雇佣肯特·贝克为我们的团队举办为期两天的TDD研讨会。我问他一些类似的问题,比如“你怎么知道你是否有足够的测试?”他的回答是“你觉得你有足够的测试吗?”当然,他不是在问“你觉得今天的工作做得够多了吗?”或者“你宁愿钓鱼,如果是的话,停止写测试。”他的观点是,当你认为你已经用尽了所有的方法,你的单位可以测试和显示正确的工作(或失败),那么你就完成了。

当然,当你在那个单元中发现一个窃听器时,你就会意识到“也许我还没完成。”然后添加更多的测试,然后修复您的bug。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5863589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档