Я следую за соглашением 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
Если вы используете 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 с разными людьми, я почти уверен, что вы не можете, вам нужно написать сценарий, чтобы прокручивать модули и запускать их на модуле по модулю.