为什么使用PHPUnit比创建自己的测试脚本更好?

ell*_*uty 8 php phpunit unit-testing

浏览文档,我看到PHPUnit只提供以下功能:

http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.assertions

所有这些都可以非常容易地在自定义测试脚本中实现,在不到1K的行中...

PHPUnit有2 MB的文件(大约200个),其中包含大量的类.此外,PHPUnit只从命令行运行:(

不会创建自己的脚本是一个更好的主意吗?

Ber*_*rak 10

PHPUnit是一个野兽.它很大,有时候反直觉,它有它的缺点.您的代码 - 自然 - 直观,完美无缺,满足您的直接要求.我也经常思考,如果编写自己的测试框架不是一个进步,但是......事实并非如此.你可以在一天内完成一个基本的测试框架,但是:

  • PHPUnit集成在大多数现代IDE中;
  • PHPUnit很适合与XDebug一起使用代码覆盖率报告;
  • PHPUnit可以与Selenium一起进行集成测试;
  • PHPUnit被许多程序员使用,这意味着你的测试很快就会被很多人清楚地看到;
  • PHPUnit可以集成到CI设置中,例如Travis CI.
  • PHPUnit有一个模拟库;
  • 最重要的是:PHPUnit 有效.

编写自己的原因有很多.


edo*_*ian 8

@hakre没有触及的两点:

代码覆盖率

对代码覆盖率进行漂亮的报告(可视化执行了多少代码)并不是那么容易,因此xDebug使您能够快速进行,有一些边缘情况和烦恼需要花费相当长的时间来构建.

PHPUnit helps you out with a nice report.

报告

测试时最重要的是能够快速找出问题所在.

a nice diff为PHP中的所有内容构建自己(异常,对象,字符串,xml,json等)非常耗时

此外,在某些时候,您将希望转移到连续的Integration服务器Jenkins,像PHPUnit 这样的测试框架已经生成了所有需要的工件(junit.xml,clover.xml)set up CI for your projects in half an hour.


总而言之,即使您没有使用所有高级功能和帮助程序(如模拟,进程隔离来测试遗留代码,输出缓冲,异常帮助程序),您也可以获得基本设置,以便在项目增长时与您一起成长并且变得更加成熟.

仅限CLI

顺便说一句.有人a web interface to phpunit称之为Visual PHPUnit在浏览器中运行.即便如此,说实话,我也没有任何线索可以解释为什么有人会这么想.也许没有刷新,但我宁愿在cli终端上使用脚本循环.但每个人自己:)


hak*_*kre 6

不会创建自己的脚本是一个更好的主意吗?

,这不是一个好主意.如果您创建自己的脚本,那么您就是单独编程.使用PHPUnit,您有一个庞大的用户社区,负责处理单元测试通常需要的各种功能,因此复制和共享代码可以减少工作.

它是软件,只有在复制时才会变坏.此外,它还带有许多输入(例如配置)和输出(测试结果格式,代码覆盖率,报告)以及集成(命令行运行器,IDE,CI服务器......).从今天开始,你甚至都不会接近.

但是,您可以在不使用PHPUnit的情况下开始测试驱动开发并编写自己的测试.这对于学习TDD非常有用,并且很好地理解为什么要使用测试框架.