我不认为上面的答案能解决我同样的问题。
接受的答案并不完美。这样,自定义选项应始终放在参数列表的末尾,并且没有指示符告诉它们是自定义选项。如果我需要的自定义选项的数量不固定,我应该编写很多代码来使用正则表达式或类似的东西解析自定义选项。
环境变量解决方案不错,但不自然。看起来很奇怪。
VAR1=aaa VAR2=bbb VAR3=ccc ./phpunit-custom-option CustomOptionTest.php
shell 脚本加上 setUp() 解决方案与公认的解决方案有相同的弱点。可能您应该编写大量代码来解析文件并处理不可预测数量的自定义选项。
我认为引导脚本不是正确的解决方案。它可以用来自动处理脏工作,每次都做同样的事情,但不能很好地处理变更部分。
我不喜欢上面所有的答案。
我自己也没有好主意。但也许我所做的可以给你灵感。我在 GitHub 上 fork 了 phpunit 项目,并稍微修改了代码,使其支持自定义选项功能。
phpunit 的修改版本,可以接受这样的自定义选项:
./phpuint-custom-option --custom var1=value1 --custom var2=value2 CustomOptionTest.php
并且在测试中,你可以通过访问超级全局变量$_SERVER来访问自定义选项
<?php
class CustomOptionTest extends PHPUnit_Framework_TestCase {
public function testCustomOption() {
$this->assertEquals('value1', $_SERVER['var1']);
$this->assertEquals('value2', $_SERVER['var2']);
}
}
您可以找到我的代码here,并下载修改后的版本here(点击页面上的“查看完整文件”链接)。
仅供参考。 this article 是类似的解决方案。