作曲家和自动化单元测试



我在自己的/公司项目中使用作曲家进行部署等。我已经使用PHP单元测试,但是现在我也想在安装项目或已更新,即,我想在作曲家前自助式降低事件上执行phpunit。请参阅https://getcomposer.org/doc/articles/scripts.md

根据单元测试的成功,我想继续或停止包装的安装过程。因此,如果单元测试失败,则不应安装版本。

您一般建议如何以这种意图进行?

我的composer.json看起来像这样:

{
    "name": "Cravid/event",
    "require": {
        "php": ">=5.3.0",
        "phpunit/phpunit": "4.*"
    },
    "autoload": {
        "psr-4": {"Cravid\Event\": "src/Gkm/Event"}
    },
    "autoload-dev": {
        "psr-4": {"Cravid\Event\": "tests/Gkm/Event"}
    },
    "extra": {
        "branch-alias": {
            "dev-master": "1.0.x-dev"
        }
    },
    "scripts": {
        "pre-autoload-dump": "phpunit"
    }
}

git是指定的版本控制系统。

您的意图可能会产生大量的麻烦。

您说您想在安装之前运行测试 - 但是,在前自动载体降低事件中运行某些内容时,已经安装了某些内容,即您将要测试的软件版本。如果该软件未能通过测试怎么办?然后,您被部分安装的软件陷入困境,该软件无法正确地转储其自动加载器。

此外,不倾倒自动加载器意味着您无法使用软件。而且您无法测试它。如果您在开发机上运行composer install以获取有缺陷的副本进行调查,则自动加载也将停止。

我认为将作曲家用于所有事物不是一个好主意。作曲家是管理软件依赖性的好工具。为了这样做,它提供了多个钩子,甚至可以在这里和那里添加一些奇怪的软件要求,但是通常您不需要这些。

要创建诸如连续集成或与自动测试连续交付之类的东西,您必须使用作曲家之外的东西。我建议使用phing来定义需要在某些步骤中完成的任务,并且可能是詹金斯的实例来执行工作。

最新更新