非常教程

Phpunit 6参考手册

指南 | Guides

Testing Practices

你总是可以写更多的测试。但是,您会很快发现只有您可以想象的一小部分测试实际上是有用的。你想要的是编写即使你认为他们应该工作也失败的测试,或者即使你认为他们应该失败也能成功的测试。另一种考虑方式是成本/收益。你想写测试以返回信息。

- Erich Gamma

开发期间

如果您需要对正在开发的软件的内部结构进行更改,以便在不改变其可观察行为的情况下更容易理解并更便宜地进行修改,则测试套件对于安全地应用这些所谓的重构具有无法估量的价值。否则,在进行重组时,您可能不会注意到系统崩溃。

以下条件将帮助您改进项目的代码和设计,同时使用单元测试来验证重构的转换步骤确实是保持行为并且不会引入错误:

  • 所有单元测试运行正确。
  • 代码传达其设计原则。
  • 代码不包含冗余。
  • 代码包含最少数量的类和方法。

当您需要为系统添加新功能时,请先写测试。然后,当测试运行时您将完成开发。这一做法将在下一章详细讨论。

调试期间

当您收到缺陷报告时,您想法可能是尽快修复缺陷。经验表明,这种想法不会奏效; 对缺陷的修复很可能会导致另一个缺陷。

您可以通过执行以下操作来保持:

  • 确认您可以重现该缺陷。
  • 在代码中查找最小规模的缺陷演示。例如,如果某个数字在输出中显示不正确,请查找计算该数字的对象。
  • 编写一个失败的自动化测试,但在缺陷修复时会成功。
  • 修复缺陷。

找到缺陷的最小并可靠再现使您有机会真正检查缺陷的原因。您编写的测试将提高修复缺陷时的可能性,因为新测试减少了将来修改代码的可能性。您之前编写的所有测试减少了无意中造成不同问题的可能性。

单元测试提供了许多优点:测试使代码作者和审阅者确信补丁产生正确的结果。编写测试用例是开发人员发现边缘案例的好动力。测试提供了一种很快捕获回归的好方法,并确保不会重复两次回归。单元测试提供了有关如何使用 API​​ 的工作示例,并且可以显着帮助文档工作。总体而言,集成的单元测试使任何单个变更的成本和风险更小。它将使项目能够......迅速而自信地进行重大的建筑改进。

- Benjamin Smedberg

  • 测试使代码作者和审阅者确信补丁能够产生正确的结果。
  • 编写测试用例是开发人员发现边缘案例的好动力。
  • 测试提供了一种很快获得回归的好方法,并确保不会重复两次回归。
  • 单元测试提供了有关如何使用 API ​​的工作示例,并且可以显著帮助文档工作。

总体而言,集成的单元测试使任何单个变更的成本和风险更小。它将使项目能够迅速地进行重大的结构改进。

    --Benjamin Smedberg   
Phpunit 6

PHPUnit 是一个 xUnit 的体系结构的 PHP 单元测试框架。

主页 https://phpunit.de/
源码 https://github.com/sebastianbergmann/phpunit
版本 6
发布版本 6.4

Phpunit 6目录

1.指南 | Guides
2.注释 | Annotations
3.声明 | Assertions