使用Symfony2 + PHPUnit的问题

时间:2016-02-13 08:00:19

标签: php unit-testing symfony phpunit deprecation-warning

我已经完成了我的第一次"真实"使用Symfony2的web应用程序。到目前为止还没有单元测试 - 因为项目增长非常快 - 我需要添加它们以在每次发布之前检查错误。 (目前我手动测试一切)

当我第一次使用" phpunit -c app /"我得到这个弃用消息:

  

其余弃用通知(37)

     

的Symfony \元器件\ DependencyInjection \定义:: setFactoryMethod(createNamed)   自2.6版以来不推荐使用,将在3.0中删除。使用   定义:: setFactory()代替:4x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的4x

     

的Symfony \元器件\ DependencyInjection \定义:: setFactoryService(form.factory)   自2.6版以来不推荐使用,将在3.0中删除。使用   定义:: setFactory()代替:4x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的4x

     

"模式"文件中的选项   " /var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/routing/security.xml"   自2.2版以来已弃用,将在3.0中删除。使用   "路径"相反,路线定义中的选项:3x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的3x

     

Twig Function" form_enctype"已弃用。使用" form_start"代替   在FOSUserBundle中:配置文件:edit_content.html.twig第1行:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

使用" Twig_Function_Method"的实例功能   " vich_uploader_asset"从版本1.21开始不推荐使用。使用   相反,Twig_SimpleFunction:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

从版本1.12开始,不推荐使用Twig_Function类   在2.0中删除。请改用Twig_SimpleFunction:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"范围"服务属性   " fos_user.resetting.form.handler.default"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ resetting.xml"   自2.8版以来不推荐使用,将在3.0:1x中删除       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

从版本1.12开始,不推荐使用Twig_Function_Method类   将在2.0中删除。请改用Twig_SimpleFunction:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

Twig Function" form_enctype"已弃用。使用" form_start"代替   在FOSUserBundle中:组:new_content.html.twig在第1行:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

Twig Function" form_enctype"已弃用。使用" form_start"代替   在FOSUserBundle:Group:edit_content.html.twig第1行:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

Twig Function" form_enctype"已弃用。使用" form_start"代替   在FOSUserBundle中:注册:register_content.html.twig在第1行:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

Twig Function" form_enctype"已弃用。使用" form_start"代替   在FOSUserBundle中:ChangePassword:changePassword_content.html.twig at   第1行:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

" _方法"路线要求" fos_user_security_check"在文件中   " /var/www/myproject/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/routing/security.xml"   自2.2版以来已弃用,将在3.0中删除。使用   "方法"属性改为:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

Twig Function" form_enctype"已弃用。使用" form_start"代替   在FOSUserBundle中:重置:reset_content.html.twig在第1行:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂服务"服务属性" fos_user.resetting.form"   在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ resetting.xml"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"范围"服务属性   " fos_user.change_password.form.handler.default"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ change_password.xml"   自2.8版以来不推荐使用,将在3.0:1x中删除       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂方法"服务属性" fos_user.profile.form"在   文件   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ profile.xml配置"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂服务"服务属性" fos_user.profile.form"在   文件   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ profile.xml配置"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

的Symfony \元器件\ DependencyInjection \定义:: setFactoryService(学说)   自2.6版以来不推荐使用,将在3.0中删除。使用   定义:: setFactory()代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂服务"服务属性" fos_user.entity_manager"   在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ orm.xml中"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

的Symfony \元器件\ DependencyInjection \定义:: setFactoryMethod(getManager)   自2.6版以来不推荐使用,将在3.0中删除。使用   定义:: setFactory()代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"范围"服务属性   " fos_user.profile.form.handler.default"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ profile.xml配置"   自2.8版以来不推荐使用,将在3.0:1x中删除       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂方法"服务属性" fos_user.registration.form"   在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ registration.xml"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂服务"服务属性   " fos_user.change_password.form"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ change_password.xml"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂方法"服务属性" fos_user.entity_manager"在   文件   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ orm.xml中"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂方法"服务属性   " fos_user.change_password.form"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ change_password.xml"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"范围"服务属性   " fos_user.registration.form.handler.default"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ registration.xml"   自2.8版以来不推荐使用,将在3.0:1x中删除       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂服务"服务属性   " fos_user.registration.form"在文件中   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ registration.xml"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

     

"工厂方法"服务属性" fos_user.resetting.form"在   文件   " /无功/网络/ myproject的/供应商/ friendsofsymfony /用户束/ FOS / UserBundle / DependencyInjection /../资源/配置/ resetting.xml"   自2.6版以来不推荐使用,将在3.0中删除。使用   "工厂"元素代替:1x       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的1x

第一次(缓存获得构建)之后,只剩下这个:

剩余弃用通知(320)

  

班级" Symfony \ Bundle \ AsseticBundle \ Config \ AsseticResource"是   通过ResourceInterface :: isFresh()执行资源检查,   自2.8以来已弃用,将在3.0:320x中删除       来自MyNamespace \ XYZBundle \ Tests \ Controller的myControllerTest :: testMyAction中的320x

我搜索了如何抑制已弃用的警告,因为它们来自依赖项,而不是来自我的代码。我找到了这个解决方案:

<php>
<ini name="error_reporting" value="-16385" />
</php>      

所以我把它添加到我的phpunit.xml中,但它没有解决问题。希望你能帮助我!

1 个答案:

答案 0 :(得分:5)

这个弃用摘要由Symfony PHPunit桥显示。它有一个弃用助手,它存储所有被触发的弃用通知,并在所有测试运行后显示它们。

可以使用SYMFONY_DEPRECATIONS_HELPER env变量配置弃用助手。这可能有几个不同的值:

  • weak - 表示当前的弃用通知是由第三方库引起的。它现在只显示Remaining deprecation notices (320),测试脚本将返回0(成功)。
  • 任意数字 - 表示允许的弃用通知数。在您的情况下,您知道320弃用通知是由Assetic而不是您的代码引起的。如果您将SYMFONY_DEPRECATIONS_HELPER设置为320,只要通知数低于320,构建就会通过。这非常有用,因为它会在您引入新的弃用时立即发出警告
  • 正则表达式 - 只要触发与正则表达式匹配的弃用,就会停止构建。这对于调试弃用通知非常有用。

可以在命令行上设置env变量:

# unix
$ SYMFONY_DEPRECATIONS_HELPER=320 phpunit -c app
# windows
> set SYMFONY_DEPRECATIONS_HELPER=320
> phpunit -c app

或在phpunit.xml(.dist)文件中:

<php>
    <env name="SYMFONY_DEPRECATIONS_HELPER" value="320"/>
</php>