我想使用命令行向PHP单元发送参数。
e.g。
./phpunit --foo='bar' AllTests
我该怎么做?
我能够达到目标的最接近的是使用以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<php>
<env name="foo" value="bar"/>
</php>
</phpunit>
然后我可以使用$_ENV['foo']
访问变量。
但是,我想使用命令行发送此变量。
答案 0 :(得分:10)
使用d
显然是对于常量环境变量,并且使用它来将更改参数传递给测试需要一些开销。
您可以做的是以下之一(有关讨论,请参阅Passing parameters to PHPUnit):
示例: phpunit.xml
优点:琐碎。
缺点:取决于环境;需要记住变量的名称(如果有很多则不是那么简单);没有关于支持/必要参数的明显文档。
示例: FOO=bar ./phpunit AllTests
优点:琐碎;独立于环境;对PHPUnit参数没有限制。
缺点:如果有多个参数,将会很痛苦,特别是如果大多数参数都是可选的;没有明确的预期论证文件。
示例: ./phpunit AllTests bar
其中. run.sh AllTests bar
查看提供的参数并将其导出到环境中。
优点:实施起来或多或少都是微不足道的;添加预期参数列表的文档;添加错误处理(例如,如果run.sh
是必需参数,但未提供)。
缺点:跑步者内部的PHPUnit参数是硬编码的;取决于环境。
示例: bar
优点:完全符合您的要求。
缺点:实施起来并不是那么简单;需要分叉,这使得它强烈依赖于当前PHPUnit版本的CLI。
示例: ./phpunit --foo='bar' AllTests
其中run.sh --foo=bar --coverage-html=baz
调用一些run.sh
,而run.php
依次通过解析器运行命令参数,构建运行测试的命令并执行此操作。
优点:现在您可以随意执行任何操作并添加所需的任何参数。您可以实现自己的记录器,也可以在多线程等中运行测试。
缺点:难以实施;有时需要维护;强烈依赖于PHPUnit CLI。
答案 1 :(得分:2)
您可以使用环境变量set
运行任何命令 ,TestCaseID: