我想知道是否有人在这两个东西的经验,可以提供一些关于 意义重大之间的差异,如果有的话?
它们各自有什么特殊的力量,使它们适合于任何特定的情况?
我发现 SimpleTest 比 PHPUnit 更容易设置。取出来就可以了。这样做的一个好处是,如果您在不止一台机器上工作,因为您可以以与源代码相同的方式存储整个测试框架,从而知道您正在使用相同的框架代码。特别是如果你以任何方式修改它。
因此,我想说 SimpleTest 的一个优点是它非常轻便和便携。
SimpleTest 还附带了一个非常简单的 HTML GUI,如果您愿意,可以非常容易地对其进行扩展。据我所知,PHPUnit 并不包含 HTML GUI,但是可以下载 GUI: s,比如 酷。
我有一段时间没有检查简单测试,上次它有一个 Eclipse 插件,这是我的一个主要因素,但它已经很长时间没有更新。 Sebastian Bergmann 仍然非常积极地致力于 PHPUnit 的开发,但是它仍然缺少一个用于 eclipse 的好插件——但是它已经包含在新的 Zend Studio 中了。
现在我更喜欢 PHPUnit,但是当我开始使用 SimpleTest 时,我并不总是能够访问命令行。SimpleTest 很不错,但是在我看来,它唯一比 PHPUnit 更好的地方就是 Web 运行程序。
我喜欢 PHPUnit 的原因是它与其他 PHP 开发工具集成,如 打电话(如 SimpleTest)、 PhpUnderControl和 辛克。在3.0版本中它支持 嘲笑,目前正在积极开发中,而且文档非常优秀。
实际上,回答这个问题的唯一方法就是同时尝试两种方法,看看哪一种更适合你的风格。
编辑: Phing 现在也与 SimpleTest 集成了。
Baphled 在 SimpleTest vs PHPUnit3上有一篇不错的文章。
我制作了一个基于 phpUnit web 的 UI 测试用例运行程序,并将其发布在 sourceforge 上。使用 ajax,并且有很酷的界面,如果你想给它一个尝试,可以在 source ceforge 检查它。项目名称是 phPunitwebui,网站是 http://phpunitwebui.sourceforge.net/
但是,我可以很容易地理解如何安装 SimpleTest。
(据我所知,PHPUnit的说明大致是这样的: “通过 PEAR 安装它,我们不会给出任何关于如何以其他方式安装它的说明”) 参见:
对于 简单测试,只需下载它并从代码中指向它。
最简单的赢了。
正如前面所指出的,这主要是一个首选项,因为两者都将运行您为其编写的测试并报告结果。
Simpletest Web UI 非常有用,但是它有时也会变得很麻烦。在我目前的项目中,我必须在系统中投入更多的工作来使我的应用程序(一个 API)与 web 接口一起工作(正确设置 apache,将文件复制到 public _ html 根目录,等等) ,而不是简单地从 eclipse 工作区运行 phPunit。因此我选择了 PHPUnit。此外,使用 PEAR 是一个很大的优点,因为您不需要手动跟踪更新。只需每隔一段时间运行一次 pear upgrade,PHPUnit 将随时更新。
pear upgrade
这个问题是相当过时的,但因为它仍然得到流量和答案,我想我在这里再次陈述我的观点,即使我已经做了一些其他(新)的问题。
我对于 SimpleTest 还是被认为是 phPunit 的替代品感到困惑。也许我只是被误导了,但就我所见:
web interface to phpunit tests
我还没有看到任何支持 SimpleTest 的论点。安装起来一点也不简单,因为 PHPUnit 可以通过梨来获得:
pear channel-discover pear.phpunit.de pear install phpunit/PHPUnit
“第一次测试”看起来也差不多。
作为 PHPUnit 3.7它的 更容易安装它只是使用 PHAR Archive 强 >
PHPUnit 3.7
PHAR Archive
wget http://pear.phpunit.de/get/phpunit.phar chmod +x phpunit-3.7.6.phar
或者对于窗口只需 下载的储存和运行:
php phpunit-.phar
或使用 支持的作曲家安装的方式时,例如
"require-dev": { "phpunit/phpunit": "3.7.*" }
敬你的作曲家 Json。
对于您想要测试的任何东西,PHPUnit 都有一个解决方案,您几乎可以在任何地方找到帮助(所以,在 freenode 上的 # phPunit irc channel,几乎每个 PHP 开发人员;)
如果我说错了或忘了什么,请纠正我:)
视频: http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/
幻灯片: http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011
它提到了像 Atoum这样自称为“ PHP 的简单、现代和直观的单元测试框架!”
我最初是在2011年1月写这个答案的,当时我没有参与任何 PHP 测试项目。从那时起,我成为了 PHPUnit 的贡献者。
这个问题已经过时了,但我想补充一下我的经验: PHPUnit 现在似乎是标准,但是如果您使用的是使用大量全局变量的遗留系统,您可能会从一开始就陷入困境。在 PHPUnit 中似乎没有很好的方法来使用全局变量进行测试,你似乎必须通过 $GLOBALS 来设置变量,如果到处都有大量的文件来设置全局变量,这样做是不好的。好吧,有些人可能会说问题出在遗留系统上,但这并不意味着我们不能在这样的系统上进行测试。使用 SimpleTest,这样的事情很简单。我认为如果 PHPUnit 允许我们在全局范围内包含一个文件,而不是在任何 class/function 范围内,那么这也不会是一个太大的问题。
另一个有前途的解决方案是 http://www.enhance-php.com,看起来不错:)
在已被接受的答案中,有一半提到的观点根本不正确:
SimpleTest 已经
缺点:
当有成千上万的功能需要一次性测试时,phPunit 是个不错的选择,而简单的测试在基于网络的情况下就不行了。
我仍然使用简单的网络来进行小规模的测试。
但两者都很好
这是一个非常随意的 PHP 开发人员的观点:
我花了两天时间才掌握了 PHPUnit,大部分时间都是在 Eclipse 下进行调试,最后我放弃了。
我花了两个小时安装 Simpletest,包括在 Eclipse 下进行调试。
也许将来我会发现 Simpletest 的不足之处,但到目前为止,它做得很好,我所需要的: 测试类,模拟对象,测试代码调试,和网页界面快速快照的情况。
再说一遍: 从一个非常随意的 PHP 用户的角度来看(甚至不是开发人员: -)