繁体   English   中英

不推荐使用 composer require-dev 安装 phpunit?

[英]Install phpunit with composer require-dev not recommended?

在我的composer.json包中,如果我的 package 中有 phpunit 测试,我将 phpunit 添加到 composer.json 的 require-dev 部分。

今天我注意到大多数使用phpunit测试的php库在require-dev中没有列出phpunit。

谁能告诉我为什么? 不建议用composer require-dev安装phpunit吗?

作曲家文件说

require-dev(仅限 root)

列出开发此 package 或运行测试等所需的包。

所以根据我的理解 phpunit 应该与 composer require-dev 一起安装

IMO将phpunit添加为require-dev依赖项是正确且方便的。

例如,它被添加到Doctrine composer.json中:

https://github.com/doctrine/doctrine2/blob/master/composer.json

我最近一直在想这个问题。 (这就是我来这里的原因。)

这一切都来自持续交付书 ( https://www.amazon.com/gp/product/B003YMNVC0/ref=kinw_myk_ro_title )。

在那里它指出您从代码中的提交构建了一个“工件”。 并且您应该通过管道对 go 使用完全相同的工件。 管道是一组阶段,这些阶段基本上以所有可能的方式测试工件,直到到达将其部署到生产的最终阶段。

因此,每个阶段的工件都相同很重要,以确保您部署到生产环境的是已经通过所有管道测试的。 如果您在每个阶段都构建工件,则无法保证这一点。

为许多项目构建工件将是一个 docker 图像,其中一个 Dockerfile 基本上是“作曲家安装”。 现在,如果您将 phpunit 放在 require-dev 上,然后使用 --no-dev 构建 composer install,您将无法在管道上使用 phpunit 测试工件(或者以某种方式安装 phpunit CI 服务器和你让它独立于构建,这可能是我的问题的解决方案)。

您可以构建两个工件,一个带有 phpunit,一个没有,但是您不能 100% 确定工件通过了所有测试,因为您实际上正在测试另一个工件(如果代码中的某些关键操作使用package 错误地列在 dev 上,因此它通过了测试,但随后在没有开发包的情况下将另一个工件部署到生产中,它开始失败了吗? - 这可以通过不使用 phpunit 来解决你的验收/功能/无论你-想给他们打电话测试)。

所以我相信这就是许多项目不将 phpunit 放在 require-dev 下,而是放在常规需求下的原因,所以他们构建一次,然后 go 通过管道使用完全相同的工件。 不过,他们最终在生产运行的应用程序中拥有 phpunit。 如果他们因为有足够的磁盘空间或其他原因而负担得起,我想这没有什么坏处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM