我认为以上的答案并没有解决我的问题。
被接受的答案并不完美。这种方式下,自定义选项总是应该放在参数列表的最后,并且没有指示器来告诉你它们是自定义选项。如果我需要的自定义选项数量不固定,我就需要编写很多代码来使用正则表达式或类似的方法来解析自定义选项。
环境变量的解决方案不错,但不太自然。看起来有些奇怪。
VAR1=aaa VAR2=bbb VAR3=ccc ./phpunit-custom-option CustomOptionTest.php
这个shell脚本加setUp()方法的解决方案与已接受的方案存在相同的弱点。也许你需要编写大量代码来解析文件并处理不可预测的自定义选项数量。
我认为引导脚本不是正确的解决方案。它可以用于自动处理繁琐的工作,每次做相同的事情,但不能很好地处理变化的部分。
我不喜欢以上所有答案。
我自己也没有好主意。但也许我所做的可以给你灵感。我在GitHub上fork了phpunit项目,并修改了一些代码,使其支持自定义选项功能。
![enter image description here](https://istack.dev59.com/k3aGa.webp)
修改后的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']);
}
}
你可以在
这里找到我的代码,并通过
点击页面上的“查看完整文件”链接下载修改后的版本。
顺便提一下,
这篇文章也有类似的解决方案。
<?php
开头。 - untill