我目前有多个测试运行程序,它们只在工作目录中不同。它们都使用相同的bootstrap.php来配置类自动加载。我最近在测试中添加了测试组注释,并根据PHP版本排除了测试。目前,我在php5.4下添加了测试运行程序选项,例如--exclude-group closure-binding
,但对于这些选项,我必须复制每个测试运行程序并手动设置选项。我想如果我能在bootstrap.php中添加修改并从那里设置组排除会更好。有办法做到这一点吗?
(phpunit版本3.7.x)
不要认为你可以在bootstrap.php上做到这一点,但你可以使用不同的XML配置文件,具有不同的组配置(例如从文档中复制的):
File: closure-binding.xml
<groups>
<include>
<group>whatever</group>
</include>
<exclude>
<group>closure-binding</group>
</exclude>
</groups>
phpunit -c closure-binding.xml
这是你需要的吗?
根据Sebastian的说法,这是不可能的,我必须使用@requires注释来代替它。
注意:@requires注释运行良好,但由于在较低版本中使用了yield
和::class
,我总是遇到解析错误。。。所以我最终不在乎这个,但是我会保留注释。也许以后我会写一个项目,它可以根据注释和php版本自动注释出测试代码
对于旧的php版本无法解析代码的情况,您必须将其移动到单独的文件中,给它们适当的后缀,并设置一个配置xml文件,如下所示:
<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>