您为 Symfony 使用哪个单元测试框架?
石灰还是 PHPUnit?使用它们的优点和缺点是什么?
在我看来,我想到了以下几点:
但是请注意,我不使用 symfony,也不使用石灰……
不过,除了那些使用 symfony 的人之外,我从未听过任何人谈论它——这不是一件好事,因为你必须工作的那一天与另一个框架(是的,发生这种情况^^)
PHPUnit 中没有的一件事:
但是一些框架(Zend 框架确实,它的 Zend_Test 组件)与 PHPUnit 集成(或使用它),同时允许将数据注入 MVC 并获取响应,而无需发出任何 HTTP 请求。
我不知道 symfony 是否允许这样做,但这对 ZF/PHPUnit 来说是件好事 ^^
(是的,不是特定于 symfony 的答案;但我所说的内容必须仍然适用于该框架)
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 代码中,那么值得您花时间检查一下插件并试一试.