Как объединить тесты модулей модуля / приложения ZF2 в один вызов?

Я следую за соглашением ZF2 по хранению тестов в модулях, и все работает нормально, когда тесты запускаются из каждого модуля. То, что я хотел бы сделать, это иметь phpunit.xml корневого уровня, который вызывает отдельные тесты модулей и объединяет их для получения данных покрытия кода и других показателей.

Проблема в том, что каждый отдельный набор тестов загружается в модульные файлы phpunit.xml. Единственный способ, которым я знаю, – это настроить загрузку в каждом файле phpunit.xml, который, очевидно, не подбирается при запуске тестов из root, поскольку отдельные файлы xml игнорируются.

Поэтому мой вопрос: есть ли способ для файла phpunit.xml на корневом уровне читать отдельные файлы phpunit.xml и bootstrap из модулей, что-то вроде наследования конфигурации phpunit, если вы это сделаете? Я мог бы пойти по пути написания этого в Phing или CI-скрипте, но мне хотелось бы, чтобы это было быстро и грязно во время разработки, и это решение по-прежнему не создавало сводный отчет о коде.

В принципе, я хочу что-то вроде этого, но вместо того, чтобы запускать тесты, я хочу, чтобы он запускал отдельные файлы phpunit.xml в каждом модуле. Это возможно?

<?xml version="1.0" encoding="UTF-8"?> <phpunit> <testsuites> <testsuite name="Site Tests"> <directory>./module/Application/test/ApplicationTest</directory> <directory>./module/User/test/UserTest</directory> </testsuite> </testsuites> </phpunit> 

Обновить

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

Обновление 2

Роберт Байт разработал сценарий, который создает структуру каталогов с отчетами модулей внутри, и он отлично работает, но было бы неплохо, если бы он работал в PHPUnit с соответствующими отчетами о показателях.

https://gist.github.com/robertbasic/5329789

Solutions Collecting From Web of "Как объединить тесты модулей модуля / приложения ZF2 в один вызов?"

Если вы используете Linux, вы можете создать простой скрипт. Не совсем то решение, которое вы хотели, но тем не менее помогло:

 #!/bin/sh modDir=$(pwd) for i in *; do if [[ -d $i/test ]]; then cd $i/test phpunit cd $modDir fi done 

Вы можете просто отбросить это в файл runtests.sh в каталоге модуля.

Просто мысль 🙂

Ранее обсудив это на irc с разными людьми, я почти уверен, что вы не можете, вам нужно написать сценарий, чтобы прокручивать модули и запускать их на модуле по модулю.