如何在phpunit.xml文件中引用环境变量?

时间:2013-02-24 19:19:00

标签: phpunit environment-variables

在我的phpunit.xml文件中,我有一个用于记录代码覆盖率报告的块,如下所示:

<logging>
    <log type="coverage-html" target="./logs/coverage" ...
</logging>

然而,我不喜欢使用硬编码字符串作为目标路径。我希望每个用户都能够通过环境变量指定他们的目标,这样他们就可以将日志放在他们喜欢的任何地方,而无需更改源控制文件。我想做这样的事情:

<logging>
    <log type="coverage-html" target="$LOG_PATH" ...
</logging>

我在PHPUnit文档中看不到任何对这种替换的支持。有没有人知道如何做到这一点?

2 个答案:

答案 0 :(得分:9)

实际上,您的存储库中不应该有phpunit.xml。 PHPUnit在执行时查找两个XML文件,即phpunit.xmlphpunit.xml.dist。如果找到它,它将始终优先phpunit.xml,否则它将回退到phpunit.xml.dist。来自documentation

  

如果当前工作目录中存在phpunit.xml或phpunit.xml.dist(按此顺序)并且未使用--configuration,则会自动从该文件中读取配置。

据说,您应该在存储库中使用phpunit.xml.dist作为运行测试的模板/样板设置。然后,每个开发人员都可以创建自己的phpunit.xml,如果他们希望添加他们的特定设置。

此外,您的存储库中应忽略文件phpunit.xml

答案 1 :(得分:0)

根据Herr Bergman

protected $backupGlobals = FALSE;

在您的测试类中,将禁用备份和恢复全局变量的(默认)行为。但请注意,将其放入setUp方法将无效。希望有所帮助。