symfony - 如何强制 symfony 的 phpunit 桥使用 phpunit 6.5 而不是 5.7?
问题描述
问题
我正在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
。
尝试过的解决方案
6.5
我看到如果我在环境变量中设置它,我可能会“强制”桥与 phpunit 一起使用:
在外壳中,我这样做:
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 脚本中,等等等等,但这不是一个可接受的解决方案,原因有两个:
- 我维护了 50 多个存储库。始终在所有 shell 中设置此设置可能会对其他项目产生副作用。
- 如果我让另一个开发人员在这个 repo 上工作,他应该能够做
git clone
++composer install
并且vendor/bin/simple-phpunit
它应该是正确的测试,没有额外的手动步骤。
问题
是否可以告诉项目(可能在 中的composer.json
某些内容)进行一些花哨的设置,以便 symfony 的 phpunit 桥被迫phpunit 6.x
(例如6.5
)在5.7
版本的所有安装中使用(例如)repo 并且不依赖于 repo 外部的任何全局?
解决方案
从 4.1 版开始,您可以在phpunit.xml
/中进行配置phpunit.xml.dist
:
<php>
<env name="SYMFONY_PHPUNIT_VERSION" value="6.5" />
</php>
推荐阅读
- laravel - 在 laravel 6.X 中覆盖供应商模型
- python - 运行 DAG 的 Apache Airflow 错误(错误 - [Errno 2] 没有这样的文件或目录)
- python-3.x - 树莓派中的python键盘事件
- ios - 需要整合apple pay和stripe
- typescript - 为什么指定类型(数字)的变量表达式在 Typescript 中转换为字符串?
- django - Django:如何删除项目网址和应用程序网址之间的空格?
- javascript - 如何对列中的所有值求和?
- json - 由于格式不正确而无法读取数据?
- c++ - 位域是对齐数据的一种方式吗?
- symfony - Symfony 形式,EntytyType/ChoiceType 来自 2 个不同的实体