我正在使用旧版本的 PHPUnit (3.4) 编写单元测试,因此无法使用 3.5 和 3.6 手册中列出的所有受支持的断言。虽然我可以重新设计测试以在我的环境中提供即时支持,但我想让我的测试依赖于 PHPUnit 的当前版本,以便一旦我或任何其他人的测试环境提供 PHPUnit 3.5+,它就会使用assertsInstanceOf() .
我以为 PHPUnit 会自动定义某种常量,但我找不到任何相关文档。
有没有什么方法可以在命令行调用时不需要定义常量来实现这一点?
\PHPUnit\Runner\Version
[git] 类及其静态 id()
方法来获取正在运行的 PHPUnit 版本:
$phpUnitVersion = \PHPUnit\Runner\Version::id(); # 9.5.19
基于此 - 停止测试执行或做任何你想做的事情。
在 PHPUnit 完全切换到 PHP 命名空间 (PHPUnit 6) 之前,旧的类名是
PHPUnit_Runner_Version
[git]。
适用于 Mac:
phpunit --version
@马克B
您可以在测试前添加注释:
/**
* @requires PHPUnit 3.7.32
*/
function testRequiringCertainPHPUnit() {
}
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
上面的答案更有可能符合您的情况,但如果您:
转到 PHPunit 安装的主目录(最有可能是 vendor)并运行:
egrep -r "Version.*\('.*'" phpunit/phpunit/src/Runner/Version.php --include=*.php --color