Symfony3 phpunit xml

时间:2016-06-06 10:09:34

标签: php phpunit symfony

嘿所有在我的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>

所以现在它工作正常,但我无法找到答案的问题是:

  1. 为什么php单元需要这个文件我可以看到文件显示phpunit在哪里寻找测试但这就是全部吗?

  2. 我手动创建了这个文件,有没有办法像终端命令一样自动创建它。

  3. 据我所知,<whitelist>是允许phpunit查看&#39;的地方。 ?和<exlude> phpunit不允许在哪里查看&#39; ?如果是,那么为什么<directory>../src/*/*Bundle/Tests</directory>如果在测试所在的地方<exlude>

3 个答案:

答案 0 :(得分:5)

使用新的symfony3目录结构,PHPUnit配置文件位于项目的根目录中,因此您不再需要指定-c参数(配置)。所以你可以按照以下方式启动:

>bin/phpunit

希望这个帮助

答案 1 :(得分:1)

首先提出问题:

  1. 这是一个配置文件。它允许您自定义PHPUnits行为。有关文件的完整说明,请查看the docs
  2. Symfony的默认安装在根目录(See the repository)中包含phpunit.xml.dist文件。 .dist在这种情况下意味着它是Symfony建议的标准,您可以根据自己的需要进行更改。您可能对parameters.yml.dist文件做了同样的事情。只需复制它并将其命名为phpunit.xml,然后根据当前环境调整任何参数。确保不将phpunit.xml文件检入VCS,以便特定于环境的更改不会干扰您运行代码的其他系统。
  3. <whitelist><exclude>元素定义应为considered by PHPUnit or ignored的文件。由于您在<filter>元素中添加了此块,因此它定义了PHPUnit应为其生成代码覆盖率的所有文件。您可以从中排除测试文件,因为您希望它们能够运行,并且只对实际代码在测试条件下的行为感兴趣。
  4. 至于为什么你的测试不能运行我不确定。尝试我在第2点中描述的方式,并在项目目录中运行phpunit。对我来说,它开箱即用。

答案 2 :(得分:0)

像@Matteo所说,Symfony3目录结构已经改变。

我发现在我的情况下,我只需要更改到Symfony3根目录并运行:

phpunit -c phpunit.xml.dist

在您的Symfony3目录结构中自动创建“phpunit.xml.dist”的默认配置文件,您可以根据需要修改该文件。我刚刚验证了上面的内容在我的系统上运行。