我正在使用较旧版本的PHPUnit(3.4)编写单元测试,因此无法使用3.5和3.6手册中列出的所有支持的断言。虽然我可以在我的环境中重新设置测试以获得即时支持,但我想让我的测试依赖于当前版本的PHPUnit,所以只要我或任何其他人的测试环境提供PHPUnit 3.5+,它就会使用assertsInstanceOf()
我认为PHPUnit会自动定义某种常量,但我找不到任何文档。
在调用命令行时,有没有办法实现这一点而不需要定义常量?
答案 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)
以上答案更可能符合您的情况,但如果您满足以下条件:
转到您的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