嘿所有在我的Symfony3项目中安装了PhpUnit,当我在我的终端bin / phpunit -c应用程序中运行时出现此错误:
Could not load XML from empty string
用谷歌搜索它,结果我需要在我的应用程序/目录中应用一个phpunit.xml文件,所以我做了,它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit
backupGlobals = "false"
backupStaticAttributes = "false"
colors = "true"
convertErrorsToExceptions = "true"
convertNoticesToExceptions = "true"
convertWarningsToExceptions = "true"
processIsolation = "false"
stopOnFailure = "false"
syntaxCheck = "false"
bootstrap = "autoload.php" >
<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*/*Bundle/Tests</directory>
<!--directory>../src/*/Bundle/*Bundle/Tests</directory-->
</testsuite>
</testsuites>
<!--
<php>
<server name="KERNEL_DIR" value="/path/to/your/app/" />
</php>
-->
<filter>
<whitelist>
<directory>../src</directory>
<exclude>
<directory>../src/*/*Bundle/Resources</directory>
<directory>../src/*/*Bundle/Tests</directory>
<!--directory>../src/*/Bundle/*Bundle/Resources</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory-->
</exclude>
</whitelist>
</filter>
</phpunit>
所以现在它工作正常,但我无法找到答案的问题是:
为什么php单元需要这个文件我可以看到文件显示phpunit在哪里寻找测试但这就是全部吗?
我手动创建了这个文件,有没有办法像终端命令一样自动创建它。
据我所知,<whitelist>
是允许phpunit查看&#39;的地方。 ?和<exlude>
phpunit不允许在哪里查看&#39; ?如果是,那么为什么<directory>../src/*/*Bundle/Tests</directory>
如果在测试所在的地方<exlude>
。
答案 0 :(得分:5)
使用新的symfony3目录结构,PHPUnit配置文件位于项目的根目录中,因此您不再需要指定-c
参数(配置)。所以你可以按照以下方式启动:
>bin/phpunit
希望这个帮助
答案 1 :(得分:1)
首先提出问题:
phpunit.xml.dist
文件。 .dist
在这种情况下意味着它是Symfony建议的标准,您可以根据自己的需要进行更改。您可能对parameters.yml.dist
文件做了同样的事情。只需复制它并将其命名为phpunit.xml
,然后根据当前环境调整任何参数。确保不将phpunit.xml
文件检入VCS,以便特定于环境的更改不会干扰您运行代码的其他系统。<whitelist>
和<exclude>
元素定义应为considered by PHPUnit or ignored的文件。由于您在<filter>
元素中添加了此块,因此它定义了PHPUnit应为其生成代码覆盖率的所有文件。您可以从中排除测试文件,因为您希望它们能够运行,并且只对实际代码在测试条件下的行为感兴趣。至于为什么你的测试不能运行我不确定。尝试我在第2点中描述的方式,并在项目目录中运行phpunit
。对我来说,它开箱即用。
答案 2 :(得分:0)
我发现在我的情况下,我只需要更改到Symfony3根目录并运行:
phpunit -c phpunit.xml.dist
在您的Symfony3目录结构中自动创建“phpunit.xml.dist”的默认配置文件,您可以根据需要修改该文件。我刚刚验证了上面的内容在我的系统上运行。