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

PhpUnit-bootstrap.php中的组排除设置,php,phpunit,bootstrapping,Php,Phpunit,Bootstrapping,我目前有多个测试运行程序,它们在工作目录中只是彼此不同。它们都使用相同的bootstrap.php来配置自动加载类。我最近在测试中添加了测试组注释,并根据PHP版本排除了测试。目前,我添加了测试运行程序选项,例如,在PHP5.4下排除组闭包绑定,但对于这些选项,我必须复制每个测试运行程序并手动设置选项。我认为如果我可以在bootstrap.php中添加修改并在那里设置组排除,那会更好。有办法吗 phpunit 3.7.x版不要认为您可以在bootstrap.php上实现这一点,但您可以使用不同的

我目前有多个测试运行程序,它们在工作目录中只是彼此不同。它们都使用相同的bootstrap.php来配置自动加载类。我最近在测试中添加了测试组注释,并根据PHP版本排除了测试。目前,我添加了测试运行程序选项,例如,在PHP5.4下排除组闭包绑定,但对于这些选项,我必须复制每个测试运行程序并手动设置选项。我认为如果我可以在bootstrap.php中添加修改并在那里设置组排除,那会更好。有办法吗


phpunit 3.7.x版

不要认为您可以在bootstrap.php上实现这一点,但您可以使用不同的XML配置文件,不同的组配置示例复制自:

这就是你需要的吗?

,这是不可能的,我必须用这个来代替那个

注意:@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>

不,这不是依赖于PHP版本的配置。。。它应该是这样的:如果php版本<5.4,那么ExcludeCloseBinding;。考虑到这一点,XML解决方案只是将-exclude group参数传递给phpunit命令的别名,因此即使它更方便,也不是您想要的。另一个选项是编写bash脚本来设置依赖于php版本的排除组,但我不知道它是否与我的IDE兼容。。。
    <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>