unit-testing - 单元测试应该和不应该涵盖什么?

标签 unit-testing

显然,I don't understand unit testing .这很好,考虑到我以前从未做过。我正在开始一个新项目,并且想从一开始就将单元测试融入其中,所以我正在学习。

我一直将单元测试与代码覆盖率等同起来,认为你应该有覆盖应用程序中每个函数/方法的单元测试,但显然情况并非如此,我完全误解了这个概念。

所以,

  • 哪些功能从单元测试中受益?
  • 哪些功能不应该进行单元测试?
  • 最佳答案

    我没有完整的答案(老实说,我很想听听任何人的答案),但至少可以提出几点......

  • 通过首先从测试插入开发,您已经走上了正确的轨道。将单元测试重新安装到现有应用程序中很困难,而且很少能提供真正的好处(相反,通常会产生代码覆盖率的错误感觉)。正确的 TDD 始终是预先考虑的,而不是事后的想法。
  • 我不会费心测试私有(private)功能。各种代码覆盖工具可能会说它未经测试,但如果它是私有(private)的,那么它的功能应该通过测试公共(public)方法来测试。私有(private)方法是内部的,而不是 API 的一部分,类之外的任何东西(甚至测试)都不应该知道或关心它们,因为如果该类的实现发生更改,它们很容易更改。
  • 专注于代码的公开 API。针对您的接口(interface)编写测试,而不是针对您的类。类本身稍后会根据测试实现和测试。
  • 最后,也是非常重要的,研究你在做什么以及它的好处是什么。编写单元测试不是一个即兴即用的过程。通过简单地编写测试并不能实现良好的测试覆盖率,而是通过了解 TDD 以及如何实现它。这需要练习。我会给出的一个建议是做一个适当的 TDD 项目,并尝试将测试 retrofit 到现有项目中。我们可以整天互相告诉对方前者比后者好,但是通过两者都做,您实际上可以辨别差异并更好地理解为什么它更好。这将使您不仅仅是编写测试,而是成为 TDD 专家以及它真正带来的东西。任何人都可以编写测试,但通常他们只是在浪费时间,除非他们真正了解发生了什么。
  • 关于unit-testing - 单元测试应该和不应该涵盖什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3591721/

    相关文章:

    javascript - 测试函数不能同时接受 'done' 回调

    unit-testing - ReSharper 单元测试无限期悬而未决

    c++ - 使用 QMake 如何为每个 main() 构建一个项目

    unit-testing - 如何进行仅在断言失败时通过的测试?

    r - 在 RStudio/Interactive R session 中出错时停止执行

    android - 为什么大型 Android Activity 单元测试会失败?

    c# - 使用 Excel 工作簿进行单元测试

    java - 如何使用Guice处理多层注入(inject)

    java - 如何通过单元测试验证是否记录了错误

    .net - 您建议使用什么 .net 测试框架?