Композитор и автоматизированные юнит-тесты

Я использую composer в своих собственных / корпоративных проектах для развертывания и т. Д. Я уже использую модульные тесты 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

Решение

Ваше намерение, вероятно, создаст огромное количество хлопот.

Вы говорите, что хотите запустить тесты ДО установки, но при запуске чего-либо в событии pre-autoload-dump что-то уже установлено, а именно версия программного обеспечения, которое вы собираетесь тестировать. Что делать, если это программное обеспечение не проходит тест? Затем вы застряли с частично установленным программным обеспечением, которое неправильно сбросило свой автозагрузчик.

Кроме того, не выгружая автозагрузчик означает, что вы не можете использовать свое программное обеспечение. И вы не можете проверить это. И если вы бежите composer install на вашей машине для разработки, чтобы получить неисправную копию для расследования, автозагрузка также остановится.

Я думаю, что не стоит использовать Composer для всего. Composer — отличный инструмент для управления программными зависимостями. Для этого он предлагает несколько хуков, позволяющих даже странным программным требованиям добавлять немного тут и там, но в общем случае вам это не нужно.

Чтобы создать что-то вроде непрерывной интеграции или непрерывной доставки с автоматическими тестами, вы должны использовать что-то за пределами Composer. Я бы порекомендовал использовать Phing определить задачи, которые необходимо выполнить для некоторых шагов, и, вероятно, экземпляр Дженкинс разрешить выполнение заданий.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector