首页 / 知识

关于php:SimpleTest与PHPunit

2023-04-13 14:46:00

关于php:SimpleTest与PHPunit

SimpleTest vs PHPunit

我想知道是否有人在这两个方面都有经验,可以揭示出两者之间的显着差异(如果有)吗?

每个组件都有什么特定的强度,使其适合任何特定情况?


这个问题已经过时了,但是由于它仍然在增加流量,并且回答了我,尽管我在这里再次陈述了我的观点,所以我已经在其他一些(较新的)问题上做了。

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

  • PHPUnit是标准;大多数框架都使用它(例如Zend Framework(1&2),Cake,Agavi,甚至Symfony也在Symfony 2中放弃了自己的Framework for phpunit)。
  • PHPUnit集成在每个PHP IDE(Eclipse,Netbeans,Zend Stuide,PHPStorm)中,并且运行良好。
  • Simpletest具有适用于PHP 5.1(又称旧版本)的eclipse扩展,仅此而已。
  • 由于PHPUnit输出所有标准日志文件以进行代码覆盖和测试报告,因此PHPUnit与每台持续集成服务器都可以正常工作。
  • 简单测试没有。尽管这不是一个大问题,但是一旦您停止"仅仅测试"并开始开发软件,它就会占用您很多时间(是的,这是具有启发性的:)不要太在意它。
  • PHPUnit被积极地维护,稳定,并且非常适合每种代码库,每种方案以及您要编写测试的每种方式。
  • (主观)PHPUnit提供的代码覆盖率报告比Simpletest好得多
  • 使用PHPUnit,您还可以在IDE中获得这些报告(Netbeans,Eclipse等)。
  • 也有一些关于web interface to phpunit tests的建议。

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

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

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

PHPUnit 3.7开始,通过使用PHAR Archive甚至更容易安装它

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

或对于仅下载phar并运行的Windows:

1
php phpunit-.phar

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

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

到您的composer.json。


对于您要测试的所有PHPUnit都有解决方案,您几乎可以在任何地方找到帮助(因此,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的贡献者。


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

我之所以喜欢PHPUnit,是因为它与其他PHP开发人员工具集成在一起,例如phing(SimpleTest也是如此),phpUnderControl和Xinc。从3.0版开始,它具有模拟支持,并且正在积极开发中,并且该文档非常出色。

真正为自己回答这个问题的唯一方法是同时尝试一下,然后看看哪种更适合您的风格。

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


  • 我不明白如何下载和安装PHPUnit。
  • 但是,我可以轻松地了解如何安装SimpleTest。

    (据我所记得,PHPUnit的说明说的是"通过PEAR安装它,我们不会提供任何其他方式的说明"。)
    看到:

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

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

所以Simpletest为我赢了。


公认答案中提到的一半要点是不正确的:

SimpleTest有

  • 设置更简单(提取到文件夹,包括并运行)
  • 只需将文件夹检入版本控制中(现在尝试使用phpunit进行此操作:))
  • 更少的依赖和大量的扩展(webtester,formtester,auth)
  • 良好的代码覆盖率报告程序,易于扩展(点,函数名称,颜色)
  • 代码覆盖率摘要(最终出现在PHPUnit 4.x中)
  • 一个体面的Web运行程序和Ajax Web运行程序,具有组和单个文件执行
  • 更好的差异工具(没有空白或换行问题)
  • 一个适配器/包装器,通过phpUnit运行SimpleTests,反之亦然
  • 兼容性PHP5.4 +

不足之处:

  • 不是行业标准(PHPUnit)
  • 没有积极维护

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


好吧,我制作了一个基于phpUnit Web的UI测试用例运行程序,并将其在sourceforge上可用。使用ajax并具有相当不错的界面,如果您想试一试,请在sourceforge上进行检查。项目名称为phpunitwebui,网站为http://phpunitwebui.sourceforge.net/


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

因此,我想说的是SimpleTest的优势在于它重量轻且可移植。

SimpleTest还附带了非常简单的HTML GUI,如果需要,可以很容易地对其进行扩展。据我所知,PHPUnit不包含HTML GUI,但是有可供下载的GUI :,例如Cool。


如前所述,这主要是一个优先选择,因为两者都将运行您为此编写的测试并报告结果。

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


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

我花了两天的时间掌握了PHPUnit,大部分时间是我试图放弃的Eclipse调试。

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

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

再次:从非常随意的PHP用户(甚至不是开发人员:-)的角度来看


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

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


我有一段时间没有检查简单测试了,上次它有一个eclipse插件,这对我来说是一个主要因素,但是很长一段时间都没有更新。
Sebastian Bergmann仍然非常积极地致力于PHPUnit的开发,但是它仍然缺少一个很好的eclipse插件-但是它包含在新的Zend Studio中。


当有成千上万的功能需要一次测试时,phpunit是一种方法,简单的测试由于基于Web而无法实现。

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

但是两者都很好


组件情况流量都有

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢