首页 文章

作曲家和自动化单元测试

提问于
浏览
1

我使用的作曲家在我自己/公司的项目部署等 . 我已经使用了PHP的单元测试,但现在我也想补充自动化单元测试时,项目安装或更新,也就是我想上执行的PHPUnit作曲家pre-autoload-dump事件 . 见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是指定的版本控制系统 .

1 回答

  • 3

    你的意图可能会造成巨大的麻烦 .

    您说您希望在安装之前运行测试 - 但是在pre-autoload-dump事件中运行某些东西时,已经安装了一些东西,即您要测试的软件版本 . 如果该软件未通过测试怎么办?然后你会遇到一个部分安装的软件,它没有正确地转储它的自动加载器 .

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

    我认为将Composer用于一切并不是一个好主意 . Composer是管理软件依赖性的绝佳工具 . 为了做到这一点,它提供了几个钩子,允许甚至奇怪的软件要求在这里和那里添加一点点,但一般来说你不应该需要这些 .

    要创建诸如持续集成或使用自动测试的持续交付之类的东西,您必须使用Composer之外的东西 . 我建议使用Phing来定义某些步骤需要完成的任务,并且可能是Jenkins的实例以允许执行作业 .

相关问题