2013-12-20 141 views
8

我想知道:如何区分Symfony2中的单元测试和功能测试?

  1. 如果这是一个好主意,单独的测试(单位| 功能...)在Symfony2中,
  2. ,应该怎样分开

通过文件夹结构

tests 
|-- functional  
|-- unit 

通过配置在phpunit.xml

<testsuites> 
    <testsuite name="unit">...</testsuite> 
    <testsuite name="functional">...</testsuite> 
</testsuites> 

通过注释

/** 
* @group unit  
*/ 
function testMyUnit() 

这是一个合理的方法?有这样做的标准方式?什么“级别”分开(单元>集成>功能)?如果我想用手动和最快速度进行这些测试并在Jenkins中获得合理的覆盖率报告,那么如何利用这些优势?

+0

将您的功能测试放入捆绑包的Controller文件夹的标准方法有什么问题? –

+0

哪里把集成测试(使用内核或容器为例)或“功能代码”从控制器中拿出来? – Koryonik

回答

5

你可以去两个配置文件 - 一个用于功能,一个用于单元测试。然后你可以单独运行你的单元测试。您希望单元测试尽可能快地运行,否则在开发时没有人会运行它们,所以这种方法工作得很好。我们使用

phpunit -c app/phpunit.xml 
phpunit -c app/phpunit_functional.xml 

的目录结构:

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

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

+0

这是如何跨多个捆绑工作的?每次添加/删除软件包时,是否必须更新全局phpunit文件? –