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