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

标签 c++ unit-testing testing tdd

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

  1. 测试负 x 越界
  2. 测试正 x 越界
  3. 测试负 y 越界
  4. 测试正 y 越界
  5. 测试是否有边界

我是否在创建冗余测试,我是否应该为我想要实现的每个方法只进行 1 次测试?

最佳答案

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

given: bounds (5, 10, 15, 20)
assert: outOfBounds(0, 0)

并通过

outOfBounds(x, y): return true

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

assert: !outOfBounds(5, 10)

所以现在失败了。可能可行的最简单的事情是什么?也许

outOfBounds(x, y): return x == 0

当然我知道我还在假装,所以我需要再做一次测试。这一直持续到我不再伪装为止。也许,在这种情况下,我会得到与您对“多少测试”问题所做的相同的 5 个案例 - 但也许我会意识到我做的比这早一点。

一个更好的问题是:我需要再做一次测试吗?

关于c++ - 在 TDD 中,我应该为一个方法编写多少测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863589/

相关文章:

java - 在内存/嵌入式 SFTP 服务器中,用于在 Java 中使用私钥身份验证进行测试

unit-testing - 将数据库加载到内存中

java - Eclipse Photon 不解析测试源中的导入

testing - Windows Phone 8 有类似 Testflight 的东西吗?

java - 可以用 Kotlin 编写函数(即在顶层)。我也可以对顶层进行单元测试吗?

c++ - 哪些枚举值在 C++14 中是未定义的行为,为什么?

c++ - 什么是意外宏替换?

c++ - 函数 "was not declared in this scope"

c++ - 如何将上下文信息传递给 std::iostream 的自定义运算符<<

node.js - sails 测试 Controller 未完全执行