您使用哪种单元测试框架用于Symfony?

Mat*_*zek 4 php phpunit unit-testing symfony1

您使用哪种单元测试框架用于Symfony?

Lime或PHPUnit?使用它们的利弊是什么?

Pas*_*TIN 8

在我看来,这里有一些我想到的事情:

  • PHPUnit与其他工具集成得更多,例如,
    • Selenium(PHPUnit可以使用它打开真正的真实浏览器来测试你的网站)
    • phpUnderControl用于持续集成
  • PHPUnit与Xdebug配合良好,可生成代码覆盖率报告
  • PHPUnit使用得更广泛; 这可能意味着更多的支持

但是请注意,我不会使用symfony,也不会使用石灰...
但是,除了那些使用symfony的人之外,我从来没有说过任何人谈论它 - 这不是一件好事,因为你必须工作的那一天与另一个框架(是的,这发生^^)


PHPUnit中没有的一件事:

  • "虚假"浏览器(能够对应用程序执行HTTP请求,而不使用Selenium打开真正的浏览器)

但是一些框架(Zend Framework与它的Zend_Test组件一起)与PHPUnit集成(或使用它),同时允许将数据注入MVC​​并获取响应,而不必发出任何HTTP请求.
我不知道symfony是否允许这样做,但这对ZF/PHPUnit来说是件好事^^


(是的,不是symfony特定的答案;但我所说的事情必须仍然适用于该框架)


ste*_*ott 6

Lime是一个更简单的测试框架,根据您的使用方式,它可能是好的或坏的.

symfony库本身使用自己的测试框架Lime来测试其代码库.从symfony书:

它是基于测试::更多Perl库,并且是符合TAP,这意味着,在测试任何协议,专为测试输出更好的可读性指定显示的测试结果.

我不能担保.因为symfony文档要求石灰框架比其他PHP测试框架"更轻便"的说法,但我真的很喜欢这样做,它内建在你的symfony项目,并与symfony的命令行工具运作良好没有任何其他配置.有一点是特别爽的是,symfony的内部石灰测试设置为具有它自己的数据库,symfony的缓存(每个测试会话期间被清除出),以及环境变量的"测试"环境中运行.当你想要做功能测试(检查服务器响应,并在你的模块/动作你的HTML输出,对基本的单元测试),这非常有用.我也喜欢石灰是非常容易接受和理解,因为它是如此简单.您还可以将测试放入YAML配置文件,而不是手动编写测试.

Pascal完全正确,PHPUnit被广泛使用,你可以在非symfony项目中使用它.甚至还有一个插件,PHPUnit symfony插件.我最好的建议是使用石灰,如果你只是想在开发symfony应用程序时直接编写简单的测试.但是,如果你有时间,希望使用这些测试技能symfony的世界之外,或在带来预先存在PHPUnit测试到的symfony代码,这将会是值得你花时间检查出的插件,并给它一个旋.