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

时间:2009-08-06 20:50:46

标签: php unit-testing symfony1 phpunit

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

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

2 个答案:

答案 0 :(得分:8)

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

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

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


有一点不在PHPUnit中:

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

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


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

答案 1 :(得分:6)

Lime是一个更简单的测试框架,根据您的使用方式,这可能是好事还是坏事。

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

  

它基于Test :: More Perl   库,并且符合TAP标准   意味着测试的结果是   按照测试中的指定显示   任何协议,旨在更好   测试输出的可读性。

我不能保证,除了symfony docs声称,lime框架比其他PHP测试框架“更轻量级”,但我确实喜欢它已经内置到你的symfony项目中,并且与symfony命令行配合得很好没有任何其他配置的工具。特别酷的一件事是symfony中的lime测试设置为在你的“测试”环境中运行,该环境有自己的数据库,symfony缓存(在每个测试会话期间被清除)和环境变量。当您想要进行功能测试(在模块/操作中检查服务器响应和html输出,而不是基本单元测试)时,这会派上用场。我也喜欢石灰是非常容易接受和理解,因为它是如此简单。您还可以将测试放入YAML配置文件,而不是手动编写测试。

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