我可以使用phpunit.xml作为凭证,使用phpunit.xml.dist作为testsuites吗?

时间:2017-01-24 06:27:52

标签: xml phpunit

我想要做的是在phpunit.xml中使用凭据,在phpunit.xml.dist中使用测试套件。这种设置的问题似乎是,每当开发人员需要添加测试时,每个开发人员都需要将其添加到他们自己的个人phpunit.xml中。为了解决这个问题,我的想法是让测试套件来自.dist版本。尽管尝试了很多不同的版本,但我不确定我错过了什么。这是我想要做的事情

<?xml version="1.0" encoding="UTF-8"?>
<phpunit
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    bootstrap="cfg/phpunit_autoload.php">
<php>
    <var name="DB_DSN" value="mysql:dbname=mysql;host=localhost;port=3306"/>
    <var name="DB_USER" value="root"/>
    <var name="DB_PASS" value="your_local_pass"/>
    <var name="DB_DEFAULTDB" value="mysql"/>        
</php>
<xi:include href="tests/phpunit.xml.dist" parse="xml" xpointer="test-suites">
    <xi:fallback>
        <testsuites id="test-suites">
            <testsuite name="MTD">
                <directory>tests/app/MTD</directory>
            </testsuite>
        </testsuites>
    </xi:fallback>
</xi:include>

这个想法是,当有人第一次启动时,他们会将.dist文件从/ tests复制到root作为.xml并替换为他们的凭据。因此,与.dist和.xml位于同一文件夹中的常规设置不同,我将在项目根目录下使用.xml文件,在/ tests中使用.dist。由于它的设置方式,测试套件可能来自版本化文件。这样就增加了新的测试套件,它们会被所有人拉动。测试将使用非版本化的.xml作为配置文件运行,而testsuites元素将包含在/ tests文件夹中的版本化.dist文件中。

然而,后备似乎并没有像我想的那样起作用。 xml解析似乎从.xml文件到.dist文件,但它没有回退并返回id =&#34; test-suites&#34;元素,而不是错误消息是&#34;无法加载外部实体&#34;文件:/ {my_path} /tests/tests/phpunit.xml.dist"。

我从documentation看不到为什么它不会起作用。

1 个答案:

答案 0 :(得分:0)

我最终将phpunit.xml保留为版本化文件,而不是使用phpunit.xml.dist,并将凭据放在非版本化的phpunit.creds.xml中,我将其称为使用XInclude。然后我使用版本化的phpunit.creds.xml.dist作为模板。