128

我想知道是否有任何在这两个方面都有经验的人可以阐明两者之间的显着差异(如果有的话)?

每种方法的任何特定优势使其适用于任何特定情况?

4

12 回答 12

90

这个问题已经过时了,但由于它仍然有流量和答案,尽管我在这里再次陈述了我的观点,即使我已经在其他一些(较新的)问题上做了它。

真的很困惑 SimpleTest仍然被认为是 phpunit 的替代品。也许我只是被误导了,但据我所知:

  • PHPUnit 是标准;大多数框架都使用它(如 Zend Framework (1&2)、Cake、Agavi,甚至 Symfony 也在 Symfony 2 中为 phpunit 放弃了自己的框架)。
  • PHPUnit 集成在每个 PHP IDE(Eclipse、Netbeans、Zend Stuide、PHPStorm)中并且运行良好。
  • Simpletest 有一个针对 PHP 5.1(又名旧)的 Eclipse 扩展,仅此而已。
  • PHPUnit 与每个持续集成服务器都可以正常工作,因为它输出所有标准日志文件以获取代码覆盖率和测试报告。
  • Simpletest 没有。虽然这不是一个大问题,但一旦你停止“只是测试”并开始开发软件,它就会给你带来很大的麻烦(是的,这种说法很挑衅:)不要太认真)。
  • PHPUnit 得到积极维护、稳定,适用于每个代码库、每个场景以及您想要编写测试的每种方式。
  • (主观)PHPUnit 提供比 Simpletest更好的代码覆盖率报告
  • 使用 PHPUnit,您还可以在 IDE(Netbeans、Eclipse、...)中获取这些报告
  • 还有一些关于web interface to phpunit tests.

我还没有看到任何支持 SimpleTest 的论据。由于 PHPUnit 可通过 pear 获得,因此安装起来并不简单:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

和“第一次测试”看起来几乎一样。

因为PHPUnit 3.7更容易安装,只需使用PHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

或者对于 Windows,只需下载phar 并运行:

php phpunit-.phar

或者当使用支持的作曲家安装方式时

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

到你的 composer.json。


对于您想要测试的所有内容,PHPUnit 都会有一个解决方案,并且您几乎可以在任何地方找到帮助(SO,freenode 上的#phpunit irc 频道,几乎每个 php 开发人员;))

如果我说错了什么或忘记了什么,请纠正我:)

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 的贡献者。

于 2012-01-03T17:12:25.063 回答
35

我现在更喜欢 PHPUnit,但刚开始时我使用 SimpleTest,因为我并不总是可以访问命令行。SimpleTest 很好,但在我看来,它对 PHPUnit 真正拥有的唯一东西是 web 运行器。

我喜欢 PHPUnit 的原因是它集成了其他 PHP 开发工具,例如phing(SimpleTest 也是如此)、phpUnderControlXinc。从 3.0 版开始,它具有模拟支持,正在积极开发中,并且文档非常好。

真正为自己回答这个问题的唯一方法是尝试两者,看看哪个更适合你的风格。

编辑:Phing 现在也与 SimpleTest 集成。

于 2008-08-29T15:40:41.550 回答
18
  • 我不明白如何下载和安装 PHPUnit。
  • 但是,我可以很容易地理解如何安装 SimpleTest。

    (据我所知,PHPUnit的说明中说了一些类似“通过 PEAR 安装它,我们不会给出任何其他方式的说明”)见:

  • http://www.phpunit.de/manual/current/en/installation.html

对于SimpleTest,只需下载它并从您的代码中指向它。

所以 Simpletest 为我赢得了胜利。

于 2009-11-18T03:34:05.290 回答
15

接受的答案中提到的一半根本不正确:

简单测试

  • 更简单的设置(提取到文件夹,包含并运行)
  • 只需将文件夹检查到版本控制中(现在尝试使用 phpunit 执行此操作:))
  • 更少的依赖和大量的扩展(webtester、formtester、auth)
  • 一个很好的代码覆盖率报告器,易于扩展(点、函数名、颜色)
  • 代码覆盖率总结(最终登陆 PHPUnit 4.x)
  • 一个不错的网络运行器和一个 ajax 网络运行器,具有组和单个文件执行
  • 更好的差异工具(没有空格或换行问题)
  • 通过 phpUnit 运行 SimpleTests 的适配器/包装器,反之亦然
  • 兼容性 PHP5.4+

不足之处:

  • 非行业标准(PHPUnit)
  • 没有积极维护
于 2014-03-29T18:32:12.793 回答
13

Baphled 有一篇关于SimpleTest vs PHPUnit3的好文章。

于 2009-05-02T13:41:21.720 回答
10

我发现 SimpleTest 比 PHPUnit 更容易设置。只需提取它,你就可以开始了。这样做的好处是,如果您在多台机器上工作,因为您可以以与源代码相同的方式存储整个测试框架,从而知道您正在使用相同的框架代码。特别是如果您以任何方式对其进行修改。

所以,我想说 SimpleTest 的一个优点是它非常轻巧且便于携带。

SimpleTest 还附带一个非常简单的 HTML GUI,如果您愿意,它很容易扩展。据我所知,PHPUnit 不包含 HTML GUI,但有 GUI:s 可供下载,例如Cool

于 2008-08-29T10:34:51.643 回答
8

好吧,我制作了一个基于 phpUnit Web 的 UI 测试用例运行程序,并在 sourceforge 上提供了它。使用 ajax 并且有非常酷的界面,如果你想试一试,请在 sourceforge 上查看。项目名称为 phpunitwebui,网址为http://phpunitwebui.sourceforge.net/

于 2009-06-16T23:03:34.533 回答
4

正如已经指出的那样,它主要是一种偏好选择,因为两者都会运行您为其编写的测试并报告结果。

Simpletest Web UI 非常有用,但有时也很麻烦。在我当前的项目中,我必须在系统中投入更多的工作才能使我的应用程序(API)与 Web 界面(正确设置 apache,将文件复制到 public_html 根目录等)一起工作。只需从 Eclipse 工作区运行 phpunit。因此我选择 PHPUnit。此外,使用 PEAR 是一大优势,因为您不需要手动跟踪更新。只需偶尔运行pear upgrade一次,PHPUnit 就会保持最新。

于 2010-12-26T17:38:56.170 回答
2

这是从一个非常随意的 PHP 开发人员的角度来看的:

我花了两天时间掌握 PHPUnit,主要是尝试在 Eclipse 下调试,最终我放弃了。

我花了两个小时来设置 Simpletest,包括在 Eclipse 下调试。

也许将来我会发现 Simpletest 的不足之处,但到目前为止它已经很好地满足了我的需求:TestClasses、Mock 对象、测试代码调试和用于快速了解情况的 Web 界面。

再说一遍:这是从一个非常普通的 PHP 用户的角度来看的(甚至不是开发人员 :-)

于 2016-08-31T12:27:42.980 回答
1

好久没查过Simple Test了,上次有个eclipse插件,这对我来说是个主要因素,不过好久没更新了。Sebastian Bergmann 仍然非常积极地致力于 PHPUnit,但它仍然缺乏一个好的 eclipse 插件——但它包含在新的 Zend Studio 中。

于 2008-08-29T10:38:51.040 回答
1

这个问题很老,但我想补充一下我的经验:PHPUnit 现在似乎是标准,但是如果您使用使用大量全局变量的遗留系统,您可能会从一开始就陷入困境。在 PHPUnit 中似乎没有用全局变量进行测试的好方法,你似乎必须通过 $GLOBALS 设置你的变量,如果你有大量的文件在各处设置全局变量,那就不好了。好吧,有些人可能会说问题出在遗留系统上,但这并不意味着我们不能在这样的系统上进行测试。使用 SimpleTest 这样的事情很简单。我想如果 PHPUnit 允许我们在全局范围内包含一个文件,而不是在任何类/函数范围内,那么它也不会成为太大的问题。

另一个有前途的解决方案是http://www.enhance-php.com,看起来不错 :)

于 2012-10-15T16:59:38.567 回答
-2

当有数千个函数要一次性测试时,phpunit 是一种方式,简单的测试由于它基于 web 而不足。

我仍在使用简单的网络进行小规模测试。

但是两个都不错

于 2015-10-16T14:19:42.953 回答