Using phpunit.xml
显然对于恒定的环境变量来说,使用它来将变化的参数传递给测试是有点开销的。
您可以执行以下操作之一(请参阅将参数传递给 PHPUnit https://stackoverflow.com/questions/2094970/passing-parameters-to-phpunit供讨论):
使用命令设置环境变量
Example: FOO=bar ./phpunit AllTests
Pros:琐碎的。
Cons:取决于环境;需要记住变量的名称(如果有很多,那就没那么简单了);没有关于可用支持/必要参数的明显文档。
Use $argv用于传递参数并在测试中使用它们。
Example: ./phpunit AllTests bar
Pros: 琐碎的;独立于环境;对 PHPUnit 参数没有限制。
Cons:如果有多个参数,特别是如果其中大多数是可选的,将会很痛苦;没有关于预期参数的明显文档。
使用设置环境变量(然后运行测试)使用您自己的运行程序脚本/函数
Example: . run.sh AllTests bar
where run.sh
查看提供的参数并将它们导出到环境中。
Pros:实施起来或多或少还是微不足道的;添加预期参数列表的文档;添加错误处理(例如,如果bar
是必需参数,但未提供)。
Cons:运行器内的 PHPUnit 参数是硬编码的;依赖于环境。
Fork PHPUnit 并在扩展命令解析器中实现您自己支持的参数
Example: ./phpunit --foo='bar' AllTests
Pros:正是您想要的。
Cons:实施起来并不那么简单;需要分叉,这使得它强烈依赖于当前 PHPUnit 版本的 CLI。
使用您自己的命令解析器编写您自己的运行器
Example: run.sh --foo=bar --coverage-html=baz
where run.sh
打电话给一些人run.php
它又通过解析器运行命令参数,构建用于运行测试的命令并执行此操作。
Pros:现在您可以做任何您喜欢的事情并添加您需要的任何参数。您可以实现自己的记录器,可以在多线程中运行测试等。
Cons:实施起来困难;有时需要维护;强烈依赖于 PHPUnit CLI。