如何检测PHPUnit的版本

sol*_*tan 13 php phpunit

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

我以为会有一些由PHPUnit自动定义的常量,但是我找不到任何关于它的文档.

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

zer*_*kms 15

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

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


Elv*_*tti 6

要使测试对于较旧的版本不完整,请执行以下操作:

    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');
    }
Run Code Online (Sandbox Code Playgroud)


Kor*_*nel 6

您可以在测试前添加注释

/**
 * @requires PHPUnit 3.7.32
 */
function testRequiringCertainPHPUnit() {
}
Run Code Online (Sandbox Code Playgroud)


小智 5

在Mac上可以使用:

phpunit --version
Run Code Online (Sandbox Code Playgroud)

@马克·B

  • 也适用于 Windows (2认同)