SimpleTest与PHPunit

paa*_*aan 127 php phpunit unit-testing simpletest

我想知道是否有任何有这方面经验的人可以对这两者之间的显着差异有所了解吗?

每种特定的强度使其适合任何特定情况?

edo*_*ian 88

这个问题已经过时但是因为它仍然得到了流量和答案我虽然我再次表明我的观点,所以我已经在其他一些(更新的)问题上做了.

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

  • PHPUnit是标准; 大多数框架都使用它(比如Zend Framework(1和2),Cake,Agavi,甚至Symfony都在为Sympfony 2删除他们自己的Framework for phpunit).
  • PHPUnit集成在每个PHP IDE(Eclipse,Netbeans,Zend Stuide,PHPStorm)中并且运行良好.
  • Simpletest有一个针对PHP 5.1(又名旧版)的eclipse扩展,没有别的.
  • PHPUnit适用于每个持续集成服务器,因为它输出所有标准日志文件以用于代码覆盖和测试报告.
  • 最简单的不是.虽然这不是一个大问题,但一旦你停止"只是测试"并开始开发软件,它会让你大吃一惊(是的,这句话是挑衅:)不要太认真对待它.
  • 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
Run Code Online (Sandbox Code Playgroud)

并且"第一次测试"看起来几乎相同.

由于PHPUnit 3.7它的安装更容易通过只使用它PHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar
Run Code Online (Sandbox Code Playgroud)

或者只是下载 phar并运行的Windows :

php phpunit-.phar
Run Code Online (Sandbox Code Playgroud)

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

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}
Run Code Online (Sandbox Code Playgroud)

到你的composer.json.


对于你想要测试的一切,PHPUnit将有一个解决方案,你几乎可以在任何地方找到帮助(SO,#fpunit irc channel on freenode,几乎每个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的贡献者.

  • 将SimpleTest考虑在PHPUnit之上的一个强有力的理由是,后者是一个命令行工具,必须安装在运行测试的服务器上,这有时比仅仅包含SimpleTest .PHP文件要困难得多(如同其他的已经解释过了.)_对于专业程序员构建他们自己的测试环境,PHPUnit听起来很难被击败但是如果将测试系统集成到基于PHP的开源应用程序中,那么_"开发人员"_应用程序可能充其量_(什么我称之为"职业程序员"_然后简单的SimpleTest对我来说真的很有吸引力.FWIW. (13认同)
  • 我发现simpletest的网络测试比phpunit的网络测试更容易设置和运行.因为这对于php来说几乎是必需的,所以这对于中小型项目来说是一个胜利,你只想在瞬间抛出一个测试框架,重要的是简单的测试级别.例如,排除Web测试,我倾向于只在simpletest中使用assertTrue()方法.当然,网络测试变得更加复杂,但它们并不一定非常复杂. (5认同)
  • @MikeSchinkel我完全同意.我们使用SimpleTest作为基于浏览器的集成测试解决方案,用于我们的定制应用程序框架.它始终可用,并且除了svn pull之外不需要安装配置,因为它包含在框架的源代码中.我们转移到PHPUnit进行CIS集成.因为我们是Windows商店,所以PHPUnit可能是安装和配置的噩梦,我们的许多初级开发人员只是打破了环境或失去了测试意愿. (2认同)

Eri*_*ner 35

我现在更喜欢PHPUnit,但是当我开始使用SimpleTest时,我并不总是能够访问命令行.SimpleTest很不错,但在我看来,它唯一真正优于PHPUnit的是网络运行者.

我喜欢PHPUnit的原因是它与其他PHP开发人员工具集成,如phing(如SimpleTest),phpUnderControlXinc.从版本3.0开始,它具有模拟支持,正在积极开发,文档非常出色.

真正唯一能够自己回答这个问题的方法就是尝试一下这个问题,看看哪个更适合你的风格.

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

  • 只是注意,phing的网站说它支持SimpleTest (4认同)

小智 18

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

所以Simpletest赢了.

  • 您可以通过PEAR安装PHPUnit,手动下载或从github获取最新代码.主页上的安装说明有明确的链接.SimpleTest只给了我一个选项,指向sourceforge,它是无数的商业广告...... (5认同)
  • 我想自从你发布答案后文档已经改变了.今天,您只需键入3个命令即可安装,您甚至不必自己下载任何内容. (4认同)

neu*_*242 13

Baphled有一篇关于SimpleTest和PHPUnit3的好文章.


Jen*_*och 13

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

SimpleTest

  • 更简单的设置(提取到文件夹,包含和运行)
  • 只需将文件夹检入版本控制(现在尝试使用phpunit :))
  • 较少的依赖关系和大量扩展(webtester,formtester,auth)
  • 一个很好的代码覆盖率记者,很容易扩展(点,函数名称,颜色)
  • 代码覆盖率摘要(最终登陆PHPUnit 4.x)
  • 一个体面的网络跑步者和一个ajax网络跑步者,有团体和单个文件执行
  • 更好的差异工具(没有空格或换行问题)
  • 一个适配器/包装器,用于通过phpUnit运行SimpleTests,反之亦然
  • 兼容性PHP5.4 +

不足之处:

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


Eri*_*ebo 8

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

因此,我认为SimpleTest的优势在于它重量轻且便于携带.

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


小智 8

好吧,我创建了一个基于phpUnit web的UI测试用例,并在sourceforge上提供了它.使用ajax并且还有非常酷的界面,如果你想在sourceforge给它一个镜头检查它.项目名称是phpunitwebui,网站是http://phpunitwebui.sourceforge.net/