是否有一种标准方法来隔离 Symfony2 应用程序的单元和功能测试


Is there a standard way of segregating unit and functional tests for a Symfony2 app?

我有一个带有单元和功能测试的Symfony2应用程序,我想知道是否有通常的做法将单元和功能测试分开,这样我就不会在运行测试套件时编译配置等的开销? 单元测试套件不应依赖于数据库的存在或特定配置。 我正在考虑采用一种命名模式来消除功能测试的歧义,或者以某种方式创建两个不同的测试套件,一个排除捆绑包中的 Tests/Controller 目录,另一个仅包含该模式。

这是其他人共同关心的问题吗,你得出了什么答案?有没有人同意我的观点,如果可能的话,Symfony2应用程序中的单元和功能测试应该默认隔离?

通常人们使用不同的工具进行单元和验收/功能测试:前者为PHPUnit,后者为Behat。使用 Behat,您将在 Features 命名空间中进行测试,并使用 app/console -e=test behat 命令运行它们,而使用 phpunit 命令运行 PHPUnit。 FOSCommentBundle就是一个例子。

如果您不想为此使用 Behat,我看到有人建议将 Tests 命名空间用于单元测试,将 Test 命名空间用于功能测试。