使用PHPUnit桥测试可重用Symfony捆绑包
我最近遇到过,并且一直在我的任何一个独立的Symfony应用程序中使用它。然而,我注意到,对于我们维护的可重用捆绑依赖项,出现了一些弃用通知 为了进行诊断,我打开了可重用捆绑包项目并安装了使用PHPUnit桥测试可重用Symfony捆绑包,symfony,phpunit,bundle,Symfony,Phpunit,Bundle,我最近遇到过,并且一直在我的任何一个独立的Symfony应用程序中使用它。然而,我注意到,对于我们维护的可重用捆绑依赖项,出现了一些弃用通知 为了进行诊断,我打开了可重用捆绑包项目并安装了symfony/phpunit桥,但在运行phpunit之后,我注意到项目没有输出任何弃用通知等 那么,如何利用带有可重用捆绑包的symfony/phpunit桥包呢 我注意到,对于我们维护的可重用的bundle依赖项,出现了一些弃用通知 为了进行诊断,我打开了可重用捆绑包项目并安装了symfony/phpun
symfony/phpunit桥
,但在运行phpunit
之后,我注意到项目没有输出任何弃用通知等
那么,如何利用带有可重用捆绑包的symfony/phpunit桥
包呢
我注意到,对于我们维护的可重用的bundle依赖项,出现了一些弃用通知
为了进行诊断,我打开了可重用捆绑包项目并安装了symfony/phpunit桥
,但在运行phpunit
之后,我注意到项目没有输出任何弃用通知等
相同的代码并不总是触发相同的警告这一事实可能表明测试是不同的
如果这来自PHP代码,您可以通过使用查看已测试和未测试的代码。使用PHPUnit时,可以添加一个选项以生成代码覆盖率报告,例如,PHPUnit…--coverage html cov/
将在cov/
目录中生成html报告。通过比较输出,您可以看到从Symfony启动的测试是否调用与从捆绑包启动的测试相同的代码
如果测试不同,您可以:
创建一个测试内核
创建routing.yml
修改phpunit.xml.dist
然后,您可以在composer.json中的所需软件包中添加
“symfony/symfony”:“~2.3”
,并安装这些软件包。将来的测试将引导此AppKernel并在完整的Symfony环境中执行测试。我尝试安装此捆绑包的软件包。软件包是否已安装?您使用phpunit
测试了哪个软件包?你为这个包安装了PHPUnit桥吗?@A.L我更新了描述以澄清一点。在看到一个使用个人捆绑包的项目中冒出的弃用通知后,我为个人可重用捆绑包安装了phpunitbridge。这有意义吗?谢谢,我现在明白你的问题了。应用程序和捆绑包中的测试是否使用相同的代码?他们使用相同的环境吗?捆绑测试似乎不会调用不推荐的代码,也不会触发通知。@A.L不推荐的通知来自服务配置层。现在,在这个捆绑包中,它是通过YAML建立的。但是,作为一个可重用的捆绑包,它也不是在解析这些文件的完整框架内设置的,因此我怀疑您在这方面是对的:未调用的代码。我曾经测试过我的一个捆绑包,一个是引导的,我非常确定YAML文件routing.yml
文件是读取的。
<?php
// Tests/Controller/App/AppKernel.php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// Dependencies
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
[...]
// My Bundle to test
new Beberlei\WorkflowBundle\BeberleiWorkflowBundle(),
);
return $bundles;
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
// We don't need that Environment stuff, just one config
$loader->load(__DIR__.'/config.yml');
}
}
# Tests/Controller/App/config.yml
framework:
secret: secret
charset: UTF-8
test: ~
router: { resource: "%kernel.root_dir%/routing.yml" }
form: true
csrf_protection: true
validation: { enable_annotations: true }
templating: { engines: ['twig'] }
session:
auto_start: false
storage_id: session.storage.filesystem
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
# Tests/Controller/App/routing.yml
BeberleiWorkflowBundle:
resource: "@BeberleiWorkflowBundle/Controller/"
type: annotation
prefix: /
<!-- phpunit.xml.dist -->
<phpunit bootstrap="Tests/bootstrap.php">
<php>
<server name="KERNEL_DIR" value="Tests/Controller/App" />
</php>
</phpunit>