在命令行上将参数发送到PHP单元

时间:2016-09-23 11:24:29

标签: php phpunit

我想使用命令行向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']访问变量。

但是,我想使用命令行发送此变量。

2 个答案:

答案 0 :(得分:10)

使用d显然是对于常量环境变量,并且使用它来将更改参数传递给测试需要一些开销。

您可以做的是以下之一(有关讨论,请参阅Passing parameters to PHPUnit):

使用命令

的设置环境变量

示例: phpunit.xml

优点:琐碎。

缺点:取决于环境;需要记住变量的名称(如果有很多则不是那么简单);没有关于支持/必要参数的明显文档。

使用 $ argv 传递参数并在测试中使用它们。

示例: FOO=bar ./phpunit AllTests

优点:琐碎;独立于环境;对PHPUnit参数没有限制。

缺点:如果有多个参数,将会很痛苦,特别是如果大多数参数都是可选的;没有明确的预期论证文件。

使用您自己的跑步者脚本/功能设置环境变量(然后运行测试)

示例: ./phpunit AllTests bar其中. run.sh AllTests bar查看提供的参数并将其导出到环境中。

优点:实施起来或多或少都是微不足道的;添加预期参数列表的文档;添加错误处理(例如,如果run.sh是必需参数,但未提供)。

缺点:跑步者内部的PHPUnit参数是硬编码的;取决于环境。

分叉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: