我想要做的是在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看不到为什么它不会起作用。
答案 0 :(得分:0)
我最终将phpunit.xml保留为版本化文件,而不是使用phpunit.xml.dist,并将凭据放在非版本化的phpunit.creds.xml中,我将其称为使用XInclude。然后我使用版本化的phpunit.creds.xml.dist作为模板。