Unit testing 如何在Symfony2中分离单元测试和功能测试?

Unit testing 如何在Symfony2中分离单元测试和功能测试?,unit-testing,symfony,tdd,Unit Testing,Symfony,Tdd,我想知道: 如果将测试分开是个好主意 功能性…)在Symfony2中 以及我该如何分开: 按文件夹结构排列: tests |-- functional |-- unit <testsuites> <testsuite name="unit">...</testsuite> <testsuite name="functional">...</testsuite> </testsuites> 通过p

我想知道:

  • 如果将测试分开是个好主意 功能性…)在Symfony2中
  • 以及我该如何分开:
  • 按文件夹结构排列

    tests 
    |-- functional    
    |-- unit
    
    <testsuites>
        <testsuite name="unit">...</testsuite>
        <testsuite name="functional">...</testsuite>
    </testsuites>
    
    通过phpunit.xml中的配置

    tests 
    |-- functional    
    |-- unit
    
    <testsuites>
        <testsuite name="unit">...</testsuite>
        <testsuite name="functional">...</testsuite>
    </testsuites>
    

    这是一个合理的方法吗?有没有标准的方法可以做到这一点?什么“级别”是独立的(单元>集成>功能)?如果我想以最快的速度手动执行这些测试,并在Jenkins中获得rational coverage报告,那么如何利用这一点?

    您可以选择两个配置文件—一个用于功能测试,另一个用于单元测试。然后您可以独立于功能测试运行单元测试。您希望您的单元测试尽快运行,否则在开发时没有人会运行它们,所以这种方法非常有效

    phpunit -c app/phpunit.xml
    phpunit -c app/phpunit_functional.xml
    
    我们使用的目录结构:

    src/Namespace/Bundle/Tests/Unit/
    src/Namespace/Bundle/Tests/Functional/
    

    第二种方法是使用一个配置文件并运行
    phpunit--testsuite unit

    将功能测试放在捆绑包的控制器文件夹中的标准方法有什么问题?将集成测试(例如使用内核或容器)或“功能代码”放在哪里失控?如何跨多个捆绑包工作?是否每次添加/删除捆绑包时都必须更新全局phpunit文件?