将参数传递给 PHPUnit

2022-08-30 10:44:07

我开始编写PHPUnit测试,我希望这些测试可以从开发人员的机器和我们的服务器运行。开发人员计算机的设置与服务器不同,甚至彼此不同。

要在这些不同的地方运行,运行测试的人似乎必须指出测试的运行位置。然后,测试可以查找运行它的计算机的正确配置。

我正在想象这样的事情:

phpunit.bat -X johns_laptop unittest.php

或在 Alpha 服务器上:

phpunit -X alpha unittest.php

在测试中,如果“X”(或它是什么)参数,我将能够获得值,并且知道,例如,这台计算机的应用程序根的路径是什么。

看起来命令行不允许这样做 - 或者我错过了什么?


答案 1

您可以使用 PHPUnit 的 --bootstrap 开关来实现此目的。

--bootstrap <file>       A "bootstrap" PHP file that is run before the tests.

然后,创建一个包含变量的引导.php文件:

$port = 4445;

在测试中,您可以获取以下值:

global $port;
$this->setPort($port);

然后运行:

phpunit --bootstrap boot.php MyTest.php

答案 2

一种方法是检查$argv和$argc。像这样:

<?php

require_once 'PHPUnit/Framework/TestCase.php';

class EnvironmentTest extends PHPUnit_Framework_TestCase {
    public function testHasParam() {
            global $argv, $argc;
            $this->assertGreaterThan(2, $argc, 'No environment name passed');
            $environment = $argv[2];
    }
}

然后你可以这样调用你的phpunittest:

phpunit EnvironmentTest.php my-computer

推荐