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

Kor*_*nik 9 tdd unit-testing symfony

我想知道 :

  1. 如果在Symfony2中分离测试(Unit | Functional ...)是个好主意,
  2. 以及我应该如何分开:

按文件夹结构:

tests 
|-- functional    
|-- unit
Run Code Online (Sandbox Code Playgroud)

通过phpunit.xml中的config:

<testsuites>
    <testsuite name="unit">...</testsuite>
    <testsuite name="functional">...</testsuite>
</testsuites>
Run Code Online (Sandbox Code Playgroud)

通过注释

/**
 * @group unit    
 */
 function testMyUnit()
Run Code Online (Sandbox Code Playgroud)

这是一个合理的方法吗?有没有标准的方法来做到这一点?什么"级别"分开(单元>集成>功能)?如果我想手动和最快地使用这些测试,并在Jenkins获得合理的覆盖率报告,如何利用它?

Dov*_*ius 7

您可以使用两个配置文件 - 一个用于功能,一个用于单元测试.然后,您可以单独运行单元测试.您希望您的单元测试尽可能快地运行,否则没有人会在开发时运行它们,因此这种方法非常有效.

phpunit -c app/phpunit.xml
phpunit -c app/phpunit_functional.xml
Run Code Online (Sandbox Code Playgroud)

我们使用的目录结构:

src/Namespace/Bundle/Tests/Unit/
src/Namespace/Bundle/Tests/Functional/
Run Code Online (Sandbox Code Playgroud)

第二种方法是拥有一个配置文件并运行phpunit --testsuite unit.