SimpleTest vs PHPunit

我想知道是否有这两种经验的人可以阐明两者之间的显着差异,如果有的话?

每个具体的力量,使它适合于任何特定的情况?

这个问题是相当过时的,但它仍然是交通和答案我虽然我在这里再次陈述我的观点,即使如此,我已经做了一些其他(较新的)问题。

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

  • PHPUnit是标准; 大多数框架使用它(比如Zend Framework(1&2),Cake,Agavi,甚至Symfony都在为phpunit在Symfony 2中放置自己的框架)。
  • PHPUnit集成在每个PHP IDE(Eclipse,Netbeans,Zend Stuide,PHPStorm)中,并且很好地工作。
  • Simpletest有PHP5.1(又名旧)的eclipse扩展,没有别的。
  • 由于PHPUnit输出所有标准日志文件以用于代码覆盖和testing报告,因此PHPUnit可与每个持续集成服务器一起正常工
  • Simpletest不。 虽然这不是一个大问题,但是一旦你停止“testing”并开始开发软件(是的,这个陈述是挑衅性的:)不要太认真),它会咬你大的时间。
  • PHPUnit被积极维护,稳定并且适用于每个代码库,每种场景以及您想要编写testing的每种方式。
  • (主观) PHPUnit提供 比Simpletest 更好的代码覆盖率报告
  • 使用PHPUnit,您还可以在IDE中获取这些报告( Netbeans ,Eclipse,…)
  • 还有一些web interface to phpunit testsweb interface to phpunit tests的build议。

我还没有看到任何有利于SimpleTest的论点。 由于PHPUnit通过pear可用,安装起来并不简单。

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

和“第一次testing”看起来差不多。

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 

或者当使用支持的composer php安装方式

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

到你的composer.json。


对于你想testing的所有东西,PHPUnit将有一个解决scheme,你将能够在任何地方find帮助(所以,在freenode #phpunit irc频道,几乎每个PHP开发人员)

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

PHPtesting工具概述

video: http : //conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

幻灯片: http : //www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

它提到了像Atoum这样的东西:“一个简单,现代,直观的PHPunit testing框架!”


全面披露

我最初写这个答案2011年1月,我没有从任何PHPtesting项目从属。 从那时起,我成为PHPUnit的贡献者。

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

我喜欢PHPUnit的原因是它集成了其他PHP开发工具,如phing (就像SimpleTest), phpUnderControl和Xinc 。 从3.0版开始,它已经嘲笑支持,正在积极开发,并且文档非常好。

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

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

  • 我无法理解如何下载和安装PHPUnit。
  • 但是,我可以很容易地理解如何安装SimpleTest。

    (据我所知, PHPUnit的说明中提到了“通过PEAR安装它,我们不会给出任何其他方式的指示”),请参阅:

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

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

所以最简单的赢了我。

Baphled在SimpleTest vs PHPUnit3上有一篇不错的文章。

接受答案中提到的一半点是不正确的:

SimpleTest有

  • 更简单的设置(提取到文件夹,包含和运行)
  • 简单地检查文件夹到版本控制(尝试用phpunit时下:))
  • less依赖和大量的扩展(webtester,formtester,auth)
  • 一个很好的代码覆盖的记者,这是很容易扩展(点,function名称,颜色)
  • 一个代码覆盖率摘要(最终落在PHPUnit 4.x中)
  • 一个体面的networking亚军和ajaxnetworking亚军,与团体和单个文件执行
  • 更好的差异工具(没有空白或换行问题)
  • 一个由phpUnit运行SimpleTests的适配器/包装器,反之亦然
  • 在GitHub上进行了积极的维护: https : //github.com/simpletest
  • 兼容性PHP5.4 +

不足之处:

  • 不是行业标准(PHPUnit)

那么我做了一个phpUnit基于Web的UItesting用例跑步者,并在SourceForge上提供。 使用ajax,并有相当酷的界面,如果你想给它一个镜头检查它在sourceforge。 项目名称是phpunitwebui,网站是http://phpunitwebui.sourceforge.net/

我发现SimpleTest比PHPUnit更容易设置。 只是提取它,你很好去。 这样做的好处是,如果您在多台机器上工作,因为您可以像存储源代码一样存储整个testing框架,从而知道您正在使用相同的框架代码。 特别是如果你以任何方式修改它。

所以,我认为SimpleTest的优势在于它重量轻,携带方便。

SimpleTest也附带一个非常简单的HTML GUI,如果你愿意的话,它很容易扩展。 据我所知,PHPUnit不包括一个HTML GUI,但是有一些GUI可供下载,比如Cool 。

正如已经指出的那样,这主要是一个首选项,因为两者都会运行您为其编写的testing并报告结果。

最简单的networking用户界面非常有用,但它有时也会变得麻烦。 在我目前的项目中,我将不得不把更多的工作放到一个系统中,以使得我的应用程序(一个API)可以在Web界面上正常工作(正确设置Apache,将文件复制到public_html根目录等)简单地从eclipse工作区运行phpunit。 所以我selectPHPUnit。 此外,由于您不需要手动跟踪更新,因此使用PEAR是一个很大的优势。 简单地运行pear upgrade一次,PHPUnit将保持最新。

我没有检查一下简单testing,上次有一个eclipse插件,这是我的一个主要因素,但它已经很久没有更新。 塞巴斯蒂安·贝格曼(Sebastian Bergmann)仍然非常积极地从事PHPUnit的工作,但是仍然缺乏一个好的eclipse插件 – 但是它包含在新的Zend Studio中。

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

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

这是从一个非常偶然的PHP开发人员的angular度来看:

我花了两天的时间去掌握PHPUnit,主要是在Eclipse下进行debugging,最后我放弃了。

我花了两个小时来设置Simpletest,包括Eclipse下的debugging。

也许我会在将来发现Simpletest的不足之处,但是到目前为止,它能够很好地满足我的需求:TestClasses,Mock对象,testing代码debugging和Web界面,以便快速了解情况。

再次: 从一个非常偶然的PHP用户的angular度来看 (甚至没有开发者:-)

当有一千个function需要testing的时候,phpunit是可以走的,简单的testing就是基于网页的。

我仍然使用简单的networking进行小规模testing。

但都是好的