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

Xav*_*ero 5 phpunit bridge version symfony composer-php

问题

我使用Symfony 3.3.10PHP 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';
}
Run Code Online (Sandbox Code Playgroud)

因为我的 PHP 版本是7.0它选择 phpunit version 5.7

尝试过的解决方案

我看到6.5如果我在环境变量中设置它,我可能会“强制”桥接 phpunit :

在 shell 中,我这样做:

rm -Rf vendor
export SYMFONY_PHPUNIT_VERSION=6.5
composer install
vendor/bin/simple-phpunit
Run Code Online (Sandbox Code Playgroud)

现在我正确地得到: PHPUnit 6.5.8

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

不要告诉我放入 .bashrc

我已经知道我可以将 env-var 设置到我的 bash 脚本中,等等,等等,但这不是一个可以接受的解决方案,原因有两个:

  1. 我维护了 50 多个存储库。在所有 shell 中始终设置此设置可能会对其他项目产生副作用。
  2. 如果我让另一个开发人员在这个 repo 上工作,他应该能够做git clone+ composer install+vendor/bin/simple-phpunit并且它应该正确地测试,没有额外的手动步骤。

是否可以告知项目(也许东西的composer.json)有一些奇特的设置,以便symfony中的PHPUnit的桥被强制使用phpunit 6.x(例如6.5超过)5.7版本的所有回购的安装和依赖于任何全球外部回购?

rob*_*006 6

phpunit.xml从 4.1 版本开始,您可以在/中进行配置phpunit.xml.dist

<php>
    <env name="SYMFONY_PHPUNIT_VERSION" value="6.5" />
</php>
Run Code Online (Sandbox Code Playgroud)