根据安装的 php 版本,在 composer 中需要不同版本的 phpunit

neu*_*ert 5 php phpunit travis-ci composer-php

所以我有一个应该在 PHP 5.3 - PHP 7.2 上运行的库。我想在 Travis CI 的每个版本上对它进行单元测试,但我遇到了 PHPUnit 的问题。在我的 composer.json 中有这个(在 require-dev 中):

"phpunit/phpunit": "~4.0",
Run Code Online (Sandbox Code Playgroud)

这一直到 PHP 7.1 都很好用,但在 PHP 7.2 中我收到此错误:

已弃用:each() 函数已弃用。此消息将在第 38 行的 /home/travis/build/neubert/project/vendor/phpunit/phpunit/src/Util/Getopt.php 中进一步调用时被抑制

这导致 Travis CI 上的单元测试失败。

我能想到的两个选项:

  1. Require ~5.0,这意味着我必须停止在 Travis CI 上测试 PHP 5.3 - PHP 5.5。https://phpunit.de/说 5.0 版本与 PHP 最高 7.1 兼容,所以即使那个版本也不能工作,在这一点上,我必须 require ~6.0,这意味着我没有做PHP 5.x 上的单元测试。
  2. 不要将 PHP 7.2+ 添加到我的 .travis.yml 文件中,也不要在 PHP 7.2+ 上进行测试。

这两种方法对我都没有多大吸引力。如果库要与 PHP 5.3 兼容(例如),我只是假设在 PHP 5.3 上运行单元测试(只要 Travis CI 支持它)。PHP 7.2 也是一样。

我想我可以 BC 打破整个库并说 PHP 5.x 不再受支持。当然,有些 PHP 纯粹主义者可能会称赞 PHP 5.x 不再受到任何地方的支持,但就像我说的那样,这将是一个 BC 中断。我想这就是语义版本控制的主要版本,但我也只是假设在选择的时间制作 BC 突破性版本,而不是被 PHPUnit 强迫做出决定。