解释单元测试的关键点是什么?

Mel*_*ats 6 unit-testing

我想向一些没有或几乎没有单元测试经验的同事介绍单元测试.我将首先介绍大约一个小时来解释这个概念并提供大量示例.我将跟进结对编程会话和代码审查.

在引导中应该关注哪些关键点?

Bri*_*sen 6

保持简短:单元测试大约是两件事

  • 验证意图的工具
  • 重构的必要安全网

显然,它远不止于此,但对我来说,几乎总结了它.


Jef*_*ffH 5

单元测试测试小东西

要记住的另一件事是单元测试测试小东西,"单位".因此,如果您的测试针对的是像实时服务器或数据库这样的资源,那么大多数人都称之为系统或集成测试.要单独测试与这样的资源对话的代码,人们经常使用模拟对象(通常称为模拟).

单元测试应该快速运行并经常运行

当单元测试测试小东西时,测试运行得很快.这是好事.经常运行的单元测试可以帮助您在发生后立即发现问题.经常运行的单元测试的最终目的是让它们自动化,作为持续集成的一部分.

覆盖率高时,单元测试效果最佳

人们对是否需要100%单元测试覆盖率有不同的看法.我相信高覆盖率是好的,但是有一个收益递减点.作为一个非常粗略的经验法则,我会对代码库感到满意,该代码库具有85%的覆盖率和良好的单元测试.

单元测试不能替代其他类型的测试

与单元测试一样重要的是,其他类型的测试(如集成测试,验收测试等)也可以被视为经过良好测试的系统的一部分.

单元测试现有代码带来了特殊挑战

如果您希望将单元测试添加到现有代码中,您可能需要查看Michael Feathers的"有效使用遗留代码".未考虑测试而设计的代码可能具有使测试变得困难的特性,而Feathers则撰写了关于仔细重构代码以使其更易于测试的方法.当您熟悉使测试代码变得困难的某些模式时,您和您的团队可以编写试图避免/最小化这些模式的代码.