2011-01-29 91 views
11

我正在使用PHPUnit(3.4)的旧版本编写单元测试,因此无法使用手册3.5和3.6中列出的所有支持的断言。尽管我可以在我的环境中重新构建即时支持测试,但我希望使测试依赖于当前版本的PHPUnit,因此,只要我或任何其他人的测试环境提供了PHPUnit 3.5+版本,就会使用assertsInstanceOf() 。如何检测PHPUnit的版本

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

有没有什么办法可以在调用命令行时不需要定义常量?

+2

`phpunit --version`? – 2011-01-29 15:53:55

+0

@zerkms:试图保持与我的发行版同步。希望其他人在他们的系统上运行测试,因此可能不会使用最新的软件。 – soletan 2011-01-31 11:07:01

+0

@Marc B:我想在代码中实现它,因为我使用“phpunit ”调用所有测试,然后需要一些测试来跳过或切换行为取决于使用的phpunit版本...某种条件编码。 – soletan 2011-01-31 11:08:57

回答

3

为了使测试不完整的旧版本:

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'); 
    } 
3

您可以在测试之前增加an annotation

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

在Mac:

phpunit --version 

@Marc乙