好吧,我用PHP和JavaScript开发Web应用程序,很多时候在Stack Overflow上我已经看到单词测试通过了,但是在网站上我没有找到一个令人满意的答案,单元测试到底是什么.
那么什么是单元测试?作为PHP和JavaScript程序员,我应该关心,还是仅仅针对"真正的"编程语言?
单元测试适用于您希望维护的任何代码.
简而言之,我们的想法是编写许多小测试,每个测试都可以单独运行,并测试代码库中最小的部分(通常是单个类或单个函数).如果我给这个函数它预期的输入,它会返回我期望的输出吗?如果是这样,那意味着应用程序的其余部分几乎可以认为它有效.如果没有,我宁愿在一个小的,简单的,孤立的单元测试函数中捕获错误,而不是试图在整个应用程序中跟踪它.
当然,它还要求您在编写代码时要遵守相当的规范,因为必须能够隔离单个函数或类来测试它们,并且因为测试不会自行编写.你必须这样做.;)
鉴于我见过的大多数PHP代码的质量,我认为单元测试肯定在PHP社区中占有一席之地.事实上,比几乎任何其他语言都要多.;)
单元测试是自动化测试,用于测试给定的代码片段是否满足您在特定情况下的预期.良好的单元测试通常在单个功能级别上测试小功能.
单元测试通常是这样设置的,即你设置一些状态,运行你想要测试的函数或方法,然后断言该函数的输出,或者由于该函数而改变其他状态.大多数单元测试框架都有支持和构建它的实用程序,例如:
测试用例:将类似测试组合在一起的方法,通常用于测试相同的文件或代码段.
设置/拆卸功能:在每次测试之前调用的功能,设置和清理状态在多个测试中是相同的.
断言函数:允许您断言特定事物为真的函数,例如值等于另一个期望值,值是真/假等.当它们失败时,它们会显示预期值和实际值是什么.
测试运行应用程序:一个接一个地为您运行所有测试的应用程序,显示每个测试是成功还是失败,如果失败,哪些特定断言失败,以及实际值与预期值相反.
单元测试有很多原因:
他们确保您的代码在您编写代码时正常工作,而无需手动测试.当您编写函数时,您可以测试您对其工作原理的假设,立即捕获错误.
即使您或其他人更改代码,它们仍可使代码正常工作.一旦函数被编写并完全单元测试(即,它应该做的所有事情都有关联的单元测试,以验证它们实际上是这样做的),那么如果你或其他任何人破坏了任何这些功能,你马上就会知道你运行单元测试,可以很容易地纠正它.
它们可以帮助您调试.在尝试诊断通过手动测试应用程序观察到的错误时,不必查看大量代码,而是通过单元测试可以专注于较小的功能,从而减少您需要考虑的复杂程度.
它们以代码更改时保持更新的方式记录您的代码.设计文档和注释很容易忘记更新.另一方面,单元测试在未更新时会中断.如果写得很清楚,它们会显示在特定情况下实际执行的代码,并且可以向您证明.
无论语言如何,单元测试对任何大于几行的代码都很有用.我绝对是单元测试的PHP代码,即使对于相对较小的项目,也可以从中获得直接的奖励.