如何强制symfony的phpunit桥使用phpunit 6.5而不是5.7?

时间:2018-06-02 23:03:37

标签: symfony phpunit composer-php version bridge

问题

我在Symfony 3.3.10

上使用PHP 7.0.25-0ubuntu0.16.04.1

默认情况下,此组合使用phpunit 5.x

但我想强制phpunit 6.x

上下文

当我第一次调用vendor/bin/simple-phpunit时,会按照源代码中的说明安装phpunit/phpunit版本5.7.*

https://github.com/symfony/phpunit-bridge/blob/v3.4.11/bin/simple-phpunit

第18-27行:

if (PHP_VERSION_ID >= 70200) {
    // PHPUnit 6 is required for PHP 7.2+
    $PHPUNIT_VERSION = getenv('SYMFONY_PHPUNIT_VERSION') ?: '6.5';
} elseif (PHP_VERSION_ID >= 50600) {
    // PHPUnit 4 does not support PHP 7
    $PHPUNIT_VERSION = getenv('SYMFONY_PHPUNIT_VERSION') ?: '5.7';
} else {
    // PHPUnit 5.1 requires PHP 5.6+
    $PHPUNIT_VERSION = '4.8';
}

由于我的PHP版本为7.0,因此它选择了phpunit版本5.7

尝试过的解决方案

我看到我可能会强迫"如果我在环境变量中设置它,那么与phpunit 6.5一起使用的桥梁:

在shell中,我这样做:

rm -Rf vendor
export SYMFONY_PHPUNIT_VERSION=6.5
composer install
vendor/bin/simple-phpunit

现在我正确地得到:PHPUnit 6.5.8

相反,如果我注销并再次登录,它将失去env-var并且下一次调用vendor/bin/simple-phpunit并强制安装5.7。

不要告诉我放入.bashrc

我已经知道我可以将env-var设置为我的bash脚本和blah,blah,blah,但由于两个原因,这不是一个可接受的解决方案:

  1. 我维护了50多个存储库。始终在所有shell中设置此设置可能会对其他项目造成副作用。
  2. 如果我让其他开发人员参与此回购,他应该可以执行git clone + composer install + vendor/bin/simple-phpunit并且应该正确测试,无需额外的手动步骤
  3. 问题

    是否有可能告诉项目(可能是composer.json中的某些内容)有一些奇特的设置,因此symfony的phpunit网桥被迫使用phpunit 6.x(例如6.5 }} 5.7版本的所有安装的repo和,具体取决于repo外部的全局内容?

1 个答案:

答案 0 :(得分:1)

从版本4.1开始,您可以在phpunit.xml / phpunit.xml.dist

中进行配置
<php>
    <env name="SYMFONY_PHPUNIT_VERSION" value="6.5" />
</php>