您的测试应该如何详细/精细?

时间:2011-07-08 09:48:59

标签: c++ unit-testing

我最近开始了一个新项目,我决定对大多数功能采用写单元测试。在此之前,我的测试仅限于偶尔编写测试“函数”以确保按预期工作,然后从不打扰更新测试函数,显然不是很好。

现在我已经编写了大量的代码和测试,我注意到我正在为我的代码编写 lot 测试。我的代码通常非常模块化,从某种意义上说,我尝试编写简单的小函数,然后根据需要将它们链接在一个更大的函数中,再次,接受最佳实践。

但是,我现在最终为单独的“构建块”函数(非常小的测试)编写测试,以及将它们链接在一起的函数的测试,并在那里测试结果,显然结果将是是不同的,但由于输入相似,我正在复制测试代码的 lot (设置输入部分,每个输入部分略有不同,但不是很多,因为它们不是相同我不能只使用文字夹具..)。

另一个问题是我尝试严格遵守每个测试测试一件事,所以我为函数中的每个不同特性编写了一个测试,例如,如果有一些额外的输入可以传递给函数,但是这是可选的,我编写了一个添加输入的版本,一个不添加输入的版本并单独测试它们。这里的设置大部分都是相同的,除了我添加的输入,再次不完全相同,所以使用夹具感觉不对“。”

由于这是我的第一个项目,所有内容都经过完全单元测试,我只是想确保我正确地做了一些事情并且测试中的代码重复是可以预期的......所以,我的问题是:我做的事情是否正确?如果没有,我应该改变什么?

我用C和C ++编写代码。

另一方面,我喜欢测试本身,现在我对我的代码更加自信。

谢谢!

1 个答案:

答案 0 :(得分:1)

你的问题试图解决很多问题,我可以尝试只回答其中的一些问题。

  1. 尽量获得尽可能高的覆盖率(理想情况下为100%)
  2. 不要使用真实资源进行单元测试,或至少尽量避免使用。你可以使用模拟和存根。
  3. 不要对第三方库进行单元测试。
  4. 您可以使用依赖注入或仿函数来破坏依赖项。这样你的测试大小就会减少。