如何针对不同的依赖版本自动化本地测试(使用composer)?

时间:2018-02-05 20:46:23

标签: php testing composer-php automated-tests

我有一个应用程序,必须使用各种版本的特定包。 我想针对不同版本的软件包自动运行本地测试。

怎么做?

我可以想到一种手动方式:

  • 更改composer.json
  • 运行composer update
  • 运行测试
  • 重复使用其他版本

更新

如上所述here,我可以在现有的composer.json上添加另一个版本:

  • composer require vendor/package:$(MY_PACKAGE_VERSION)
  • 运行测试
  • 拉另一个版本

但是必须要小心,因为你正在搞乱应用程序的工作副本。由于ob-ivan建议在其他地方克隆应用程序,请提取新版本并在那里执行测试。

1 个答案:

答案 0 :(得分:1)

受这个问题的启发,我已经为此目的开发了一个实用程序。

介绍DiversiTest:https://github.com/ob-ivan/diversitest

它在CI服务器中运行测试的主要优势在于它允许您在提交之前或甚至在编码之前测试正在进行的工作 - 例如,如果您不想制作在TTD流程中创建红色测试后显式提交。

如何使用

composer require ob-ivan/diversitest

安装

添加如下配置文件:

# diversitest.yaml
package_manager: 'composer require $package $version'
test_runner: 'vendor/bin/phpunit'
packages:
    illuminate/support:
        - 5.4.*
        - 5.5.*

运行:

vendor/bin/diversitest

这会将您的工作目录复制到一个临时文件夹,并循环安装依赖项版本并使用config提供的命令运行测试。

请注意,如果您列出几个包含版本列表的软件包,它将通过所有提供的package:version对的笛卡尔产品。

该实用程序仍处于开发阶段,欢迎在GitHub问题页面上提供功能请求和错误报告。