有没有办法测试 PHPUnit 以外的 Symfony 应用程序?

Is there a way to test Symfony application other than PHPUnit?

在一次面试中,项目经理问了我以下问题:

I see in your resume that you are using PHPUnit 4 for tests? Why don't you use the built-in testing of Symfony?

我回答:

What I know is that Symfony app testing is done via PHPUnit, which is recommended from the docs of 2.3 and 2.7. I don't know if Symfony3 comes with a testing component!

我的回答正确吗?感谢您的解释。

是的,你是对的。 Symfony 有一个 WebTestCase (extending the KernelTestCase where you can find that it extends PhpUnit) for functional testing. Additionally Symfony provides a PhpUnitBridge 可以为 Symfony 应用程序编写 PHPUnit 测试提供有用的东西,例如使使用已弃用组件的测试失败。两者都依赖于 PHPUnit 并在 "vanilla" phpunit.

之上提供额外的功能

还有其他测试工具,例如用于更高级别测试(功能和验收测试)的 phpspec for writing unit tests and Behat,但两者都没有在 Symfony 内部使用,因此似乎并不是真正被问及的问题.

您回答的其他信息: 根据我的经验,WebTestCase 也 bootstrap 内核在所有测试中作为静态方法。因此,该工具不太适合单元测试,因为该测试应该很快。他们使用功能测试控制器和操作来设计它,但不需要启动 HTTP 服务器。

然后:

  • 单元测试,内置不是好的选择
  • 功能测试,这是初衷,但我认为,Behat 是更好的解决方案
  • 系统测试 - 不太好。

总结,这就是我不使用这个工具的原因。