单元测试 - 失败提示

  • 作者:KK

  • 发表日期:2016.12.4


有些同学依然没懂得每个断言方法最后附加的$message这个可选参数的意义,在断言大全里可以看到每一个断言方法的最后一个参数都叫做$message,并且是一个可选参数

它的作用就是为了在测试失败的时候,给出相关提示以方便咱们快速定位到是哪里出错

比如$this->assertTrue($user->add(), '注册失败')这句代码,如果断言成功那就不会有相关提示,但如果断言失败的话就会提示“注册失败”了

因为一个测试方法里面可以存在很多断言,比如我个人一般会在测试方法里平均写6到10个断言左右(附(样例代码)[https://github.com/kk8686/xoa/blob/master/server/tests/codeception/unit/WorkerTest.php#L37])

那么运行这些测试代码的期间如果有一个断言失败了,不加message的话是不容易知道哪个失败的,而有了message就很好办了


也为了让测试报告更加清晰

不仅仅是为了调试,如果公司有持续集成的话还可以在测试失败时将这些message打印到集成的输出信息里,这样更容易解读集成失败的原因以及方便其他人复查集成情况

再是如果在一个很规范项目里,还可能要将测试报告归档,并且严格要求程序员按照报告的情况去修复+补充相关测试,这时候测试报告的可读性就变得很重要了。不过当然我认为在PHP领域的测试里是极少有这种需求的,真要那么规范的话那项目当然是很有商业价值的了,这种项目的核心部分多数已经用JAVA或其他C++等实现,相关测试也不需要PHP写

但至少也是为了让自己调试、持续集成的报告变得好看可读吧,我还是很提倡加message参数的