PhpUnit-bootstrap.php中的组排除设置


PhpUnit - group exclusion settings from bootstrap.php

我目前有多个测试运行程序,它们只在工作目录中不同。它们都使用相同的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>