如何强制symfony';s phpunit桥是否使用phpunit 6.5而不是5.7? 问题
我在如何强制symfony';s phpunit桥是否使用phpunit 6.5而不是5.7? 问题,symfony,phpunit,composer-php,version,bridge,Symfony,Phpunit,Composer Php,Version,Bridge,我在php7.0.25-0ubuntu0.16.04.1上使用Symfony 3.3.10 默认情况下,此组合与phpunit 5.x一起使用 但是我想强制phpunit6.x 上下文 当我第一次调用vendor/bin/simple phpunit时,它会安装phpunit/phpunit版本5.7.*,如这里的源代码所述: 第18-27行: if (PHP_VERSION_ID >= 70200) { // PHPUnit 6 is required for PHP 7.2+
php7.0.25-0ubuntu0.16.04.1上使用Symfony 3.3.10
默认情况下,此组合与phpunit 5.x一起使用
但是我想强制phpunit6.x
上下文
当我第一次调用vendor/bin/simple phpunit
时,它会安装phpunit/phpunit
版本5.7.*
,如这里的源代码所述:
第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
试液
如果我在环境变量中设置了phpunit6.5
,我可以“强制”桥接器:
在shell中,我执行以下操作:
rm -Rf vendor
export SYMFONY_PHPUNIT_VERSION=6.5
composer install
vendor/bin/simple-phpunit
现在我正确地得到:phpunit6.5.8
相反,如果我注销并再次登录,它会释放env var和对vendor/bin/simple phpunit的下一次调用,并强制安装5.7
别叫我把它放进
我已经知道我可以将env var设置到bash脚本中,诸如此类,但这不是一个可接受的解决方案,原因有两个:
我维护了50多个存储库。在所有shell中始终使用此集可能会对其他项目产生副作用
如果我让另一个开发人员来处理这个repo,他应该能够执行git clone
+composer安装
+vendor/bin/simple phpunit
,并且应该能够正确地进行测试,而不需要额外的手动步骤
问题:
是否可以告诉项目(可能是composer.json
中的某个内容)进行一些奇特的设置,以便symfony的phpunit桥被迫使用phpunit 6.x
(例如6.5
)在5.7
版本中,所有回购和非安装取决于回购外部的任何全局性内容?自4.1版以来,您可以在phpunit.xml
/phpunit.xml.dist
中配置此功能:
<php>
<env name="SYMFONY_PHPUNIT_VERSION" value="6.5" />
</php>
symfony的4.1版?或phpuunit本身的4.1版?symfony/phpunit桥接器的4.1版
-啊,好的。。。我懂了。我现在需要在我的作曲器中使用“symfony/phpunit桥”:“^3.0”
。如果我升级了专业,是否有打破一切的风险?我是说。。。桥3是为symfony 3设计的,桥4是为symfony 4设计的吗?或者symfony 3可以安全地使用bridge 4运行而不需要太多的中断?我不知道BC中断,但是symfony 3.4.10在其require dev
中有symfony/phpunit bridge:~3.4 | ~4.0
,所以我想它应该可以正常工作。我使用bin/phpunit
,它由symfony/phpunit桥:4.2.4
安装。我尝试了您的方法将phpunit版本设置为7.5,但它不起作用。唯一的工作方法是在putenv('SYMFONY\u phpunit\u version=7.5')
行的bin/phpunit
中设置版本。你知道为什么会这样吗?