4

您为 Symfony 使用哪个单元测试框架?

石灰还是 PHPUnit?使用它们的优点和缺点是什么?

4

2 回答 2

8

在我看来,我想到了以下几点:

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

但是请注意,我不使用 symfony,也不使用石灰……
不过,除了那些使用 symfony 的人之外,我从未听过任何人谈论它——这不是一件好事,因为你必须工作的那一天与另一个框架(是的,发生这种情况^^)


PHPUnit 中没有的一件事:

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

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


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

于 2009-08-06T20:59:26.157 回答
6

Lime 是一个更简单的测试框架,它可能是好是坏取决于你想如何使用它。

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

它基于 Test::More Perl 库,并且符合 TAP 标准,这意味着测试结果按照 Test Anything 协议中的规定显示,旨在提高测试输出的可读性。

我不能保证像 symfony 文档所声称的那样,lime 框架比其他 PHP 测试框架“更轻量级”,但我真的很喜欢它直接内置到您的 symfony 项目中,并且可以很好地与 symfony 命令行工具配合使用而无需任何附加配置。一件特别酷的事情是 symfony 中的石灰测试设置为在您的“测试”环境中运行,该环境具有自己的数据库、symfony 缓存(在每个测试会话期间被清除)和环境变量。当您想要进行功能测试(检查服务器响应和模块/操作中的 html 输出,而不是基本单元测试)时,这会派上用场。我也喜欢石灰非常容易上手和理解,因为它非常简单。

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

于 2009-08-07T18:39:20.153 回答