如何检测PHPUnit的版本

问题描述 投票:0回答:5

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

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

有没有什么方法可以在命令行调用时不需要定义常量来实现这一点?

php phpunit
5个回答
21
投票

您可以使用

\PHPUnit\Runner\Version
[git] 类及其静态
id()
方法来获取正在运行的 PHPUnit 版本:

$phpUnitVersion = \PHPUnit\Runner\Version::id(); # 9.5.19

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


在 PHPUnit 完全切换到 PHP 命名空间 (PHPUnit 6) 之前,旧的类名是

PHPUnit_Runner_Version
[git]


17
投票

适用于 Mac:

phpunit --version

@马克B


7
投票

您可以在测试前添加注释

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

1
投票

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

0
投票

上面的答案更有可能符合您的情况,但如果您:

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

转到 PHPunit 安装的主目录(最有可能是 vendor)并运行:

egrep -r "Version.*\('.*'" phpunit/phpunit/src/Runner/Version.php --include=*.php --color
© www.soinside.com 2019 - 2024. All rights reserved.