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

时间:2012-08-08 11:38:54

标签: php unit-testing phpunit

浏览文档,我发现PHPUnit只提供以下功能:

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

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

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

不会创建自己的脚本更好吗?

4 个答案:

答案 0 :(得分:10)

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

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

反对写自己的原因有很多。

答案 1 :(得分:8)

@hakre没有触及的两点:

代码覆盖率

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

PHPUnit helps you out with a nice report.

报告

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

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

同样在某些时候你会想要转移到像Jenkins这样的连续集成服务器,像PHPUnit这样的测试框架已经生成了所有需要的工件(junit.xml,clover.xml),使你能够{ {3}}


总而言之,即使您没有使用所有高级功能和帮助程序(如模拟,进程隔离来测试遗留代码,输出缓冲,异常帮助程序),您也可以获得基本设置,你的项目越来越成熟。

仅限CLI

顺便说一下。名为set up CI for your projects in half an houra web interface to phpunit在浏览器中运行。即便如此,说实话,我也没有任何关于为什么有人会想要的线索。也许没有刷新,但我宁愿在cli终端上使用脚本循环。但是每个人都有:)

答案 2 :(得分:6)

  

不会创建自己的脚本更好吗?

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

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

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

答案 3 :(得分:0)

我认为以上内容涵盖了它,但由于没有标明正确的答案,请允许我补充一点:不要在行业中制造经典的错误,以便重新发明轮子。如果已经存在事实上的标准,并且社区和/或企业支持任何具有路线图的软件......请使用它。设计自己的解决方案的唯一好处是学习如何更好地为其他已建立的解决方案工作。所以,为了回答你的问题,你能做到吗,是的,你是否,不,并且它可能是有教育意义的。为什么要使用PHP,你可以创建自己的语言。为什么使用框架X,您可以创建自己的框架。你明白了。除非您真正拥有一种独特的方法,能够清晰地展示出比现有流行方法更好的产品,所以即便考虑也是一条糟糕的道路。