我在我自己/公司的项目中使用composer进行部署,等等。我已经使用php单元测试,但现在我也想在项目安装或更新时添加自动单元测试,即我想在composer pre-autoload-dump事件上执行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是指定的版本控制系统。
发布于 2015-05-05 04:02:30
你的意图可能会制造大量的麻烦。
你说你想在安装之前运行测试-但是当在pre-autoload-dump事件中运行一些东西时,已经安装了一些东西,即你将要测试的软件的版本。如果该软件未通过测试怎么办?然后你就会被一个部分安装的软件卡住了,这个软件没有正确地转储它的自动加载器。
此外,不转储自动加载器意味着您无法使用您的软件。你不能测试它。如果您在开发机器上运行composer install以获取错误副本进行调查,则自动加载也将停止。
我认为使用Composer解决所有问题并不是一个好主意。Composer是管理软件依赖性的一个很好的工具。为了做到这一点,它提供了几个钩子,允许即使是奇怪的软件需求在这里和那里添加一点,但通常你不应该需要这些。
要创建具有自动测试的持续集成或持续交付之类的东西,您必须使用Composer之外的东西。我建议使用Phing来定义某些步骤需要完成的任务,并可能使用Jenkins的一个实例来允许执行作业。
https://stackoverflow.com/questions/30025650
复制相似问题