2012-04-23 28 views
3

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

这是其他人共同关心的问题,你有什么答案?有没有其他人分享我的感觉,如果可能的话,Symfony2应用程序中的单元和功能测试应该默认分离?

回答

2

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

如果你不想为此使用Behat,我已经看到一些人建议使用Tests命名空间进行单元测试,而Test命名空间用于功能函数。

+0

感谢您的支持。那么,Behat现在是Symfony2中功能测试的事实标准吗?我可以开始使用它,但它当然不能解决问题,即存储测试的标准约定(可能包括WebTestCase的子类(即功能测试))不会在单元和功能之间消除歧义。 – 2012-04-23 17:08:05

+0

如果您使用Behat,您将停止使用'WebTestCase'并将Behat&Mink用于验收/功能测试。这样你的'Tests'命名空间将只有单元测试。 – 2012-04-23 17:35:36

+1

我明白了。 :)我只想知道,如果社区大多数人都愿意通过WebTestCase来使用Behat/Mink,因为只要WebTestCase在框架中,并被记录为功能测试的方式(甚至如果我们知道你可以使用BDD框架作为替代),并且没有自动分隔测试套件,这对我来说似乎已经破裂。 – 2012-04-23 23:20:53

相关问题