According to Sebastian,我应该使用@requires annotation来做到这一点。它不能用组来完成,因为我不能根据php版本自动排除它们。
Btw。它并没有帮助,因为我一直运行到解析错误5.3版本,因为使用yield
和::class
的...
他建议的版本相关的代码移动到另一个文件,并使用此:
<testsuite name="My Test Suite">
<directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">/path/to/files</directory>
<file phpVersion="5.3.0" phpVersionOperator=">=">/path/to/MyTest.php</file>
</testsuite>
该文件不应该是/path/to/files
目录下,除非你希望它被包含...
最后我加了2个新的后缀较高有关PHP版本的测试:
<testsuite name="unit tests">
<directory suffix="Test.php" phpVersion="5.3.0" phpVersionOperator=">=">test/unit</directory>
<directory suffix="Test54.php" phpVersion="5.4.0" phpVersionOperator=">=">test/unit</directory>
<directory suffix="Test55.php" phpVersion="5.5.0" phpVersionOperator=">=">test/unit</directory>
</testsuite>
您不应该依赖您的测试执行版本。例如,在开发和集成机器上,您可以使用5.5并通过测试,但是在生产中您有5.4并且代码失败。它看起来像你有他们的测试,但如果你没有执行所有的测试它真的很糟糕。在这种情况下,不同的测试服务器使用不同的php版本,并且始终运行所有测试用例 – PolishDeveloper