如何检测PHPUnit的版本

时间:2011-01-29 15:48:13

标签: php phpunit

我正在使用较旧版本的PHPUnit(3.4)编写单元测试,因此无法使用3.5和3.6手册中列出的所有支持的断言。虽然我可以在我的环境中重新设置测试以获得即时支持,但我想让我的测试依赖于当前版本的PHPUnit,所以只要我或任何其他人的测试环境提供PHPUnit 3.5+,它就会使用assertsInstanceOf()

我认为PHPUnit会自动定义某种常量,但我找不到任何文档。

在调用命令行时,有没有办法实现这一点而不需要定义常量?

6 个答案:

答案 0 :(得分:15)

您可以使用PHPUnit_Runner_Version课程获取版本:https://github.com/sebastianbergmann/phpunit/blob/3.5/PHPUnit/Runner/Version.php

基于此 - 停止测试执行或做任何你想做的事。

答案 1 :(得分:4)

使旧版本的测试不完整:

    if (
        !method_exists('PHPUnit_Runner_Version','id')
        || version_compare(PHPUnit_Runner_Version::id(), '3.7', '<=')
    ) {
        $this->markTestIncomplete('need phpunit >= 3.7 to run this test');
    }

答案 2 :(得分:4)

您可以在测试前添加an annotation

/**
 * @requires PHPUnit 3.7.32
 */
function testRequiringCertainPHPUnit() {
}

答案 3 :(得分:4)

适用于mac:

phpunit --version

@Marc B

答案 4 :(得分:0)

以上答案更可能符合您的情况,但如果您满足以下条件:

  1. 想要使用终端。
  2. 您拥有的项目使用不同版本的PHPunit,并希望检查特定的版本。

转到您的PHPunit安装目录(很可能是 vendor )并运行:

egrep -r "Version.*\('.*'" phpunit/phpunit/src/Runner/Version.php --include=*.php --color

答案 5 :(得分:0)

2020解决方案

use PHPUnit\Runner\Version as PHPUnitVersion;

die(PHP_EOL . PHPUnitVersion::id() . PHP_EOL); // 9.2.6
die(PHP_EOL . PHPUnitVersion::series() . PHP_EOL); // 9.2
die(PHP_EOL . explode('.', PHPUnitVersion::id())[0] . PHP_EOL); // 9