8

查看文档,我发现 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

4 回答 4

10

PHPUnit 是一头野兽。它很大,有时有点违反直觉,并且有缺陷。您的代码自然会直观且完美地满足您的直接需求。我也经常思考编写自己的测试框架是否会向前迈出一步,但是......它不是。您可以在一天内完成一个基本的测试框架,但是:

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

有很多理由反对自己编写。

于 2012-08-08T12:22:22.830 回答
8

@hakre 没有提到的两点:

代码覆盖率

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

PHPUnit helps you out with a nice report.

报告

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

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

此外,在某些时候,您会想要迁移到像 PHPUnit 这样的连续集成服务器,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 终端上执行脚本循环。但对每个人来说都是自己的:)

于 2012-08-08T12:15:00.677 回答
6

创建我自己的脚本不是更好的主意吗?

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

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

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

于 2012-08-08T11:59:56.830 回答
0

我认为上面已经涵盖了它,但是由于没有标记正确的答案,所以让我补充一下:不要犯行业中犯的经典错误,即被驱使重新发明轮子。如果已经有事实上的标准,并且社区和/或企业支持任何带有路线图的软件......使用它。设计自己的解决方案的唯一好处是了解胆量如何更好地为其他已建立的解决方案工作。所以要回答你的问题,你能做到吗,是的,如果你,不,它是否具有教育意义,也许。为什么使用 PHP,您可以创建自己的语言。为什么使用框架 X,您可以创建自己的框架。你明白了。除非你真的有一种独特的方法,可以清楚地展示出比流行的现有方法更好的产品,否则它'

于 2012-12-22T05:22:17.750 回答