2013-02-24 87 views
3

在我phpunit.xml文件,我已经得到了日志代码覆盖率报告一大块,这样的事情:如何在phpunit.xml文件中引用环境变量?

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

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

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

我没有看到这种替代在PHPUnit的文档的任何支持。有没有人有如何完成这个想法?

+0

好的问题,我使用Phinx迁移系统为我的数据库迁移编码在php中。它是通过JSON(而不是xml)配置的,但是你可以设置默认值并且覆盖环境变量,就像你在你的问题中提出的一样。希望这存在于PHP单位。不喜欢创建文件本地副本只是为了更改基本源代码目录或测试文件目录等简单的东西 - 特别是至少在一个答案中推荐使用完全限定路径的渴望。 – Ray 2017-01-22 19:29:04

回答

6

其实你的仓库里不应该有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应该在您的存储库中被忽略。

+0

完美,谢谢! – 2013-03-05 14:38:43

+0

所以答案是没有能力通过环境变量动态替换你的配置XML文件 - 你必须修改你想改变的每个项目。希望这个功能存在! – Ray 2017-01-22 19:23:57

0

根据Herr Bergman

protected $backupGlobals = FALSE; 

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

+1

你误解了这个问题。我在谈论的是shell环境变量,而不是PHP变量。我想在phpunit.xml文件中引用它们,而不是实际的测试。 – 2013-02-28 16:06:03