Как объединить тесты модуля блока/приложения ZF2 в один вызов?
Я следую соглашению ZF2 о хранении тестов в модулях, и все работает нормально, когда тесты запускаются из каждого модуля. То, что я хотел бы сделать, это иметь корневой уровень phpunit.xml, который вызывает тесты отдельных модулей и объединяет их для получения данных покрытия кода и других метрик.
проблема в том, что каждый отдельный набор тестов загружается в модульный phpunit.XML-файл. Единственный способ, которым я знаю, что делаю, - это настроить bootstrap в каждом phpunit.xml-файл, который, очевидно, не берется при запуске тестов из root, поскольку отдельные xml-файлы игнорируются.
поэтому мой вопрос: есть ли способ для PHPUnit корневого уровня.xml-файл для чтения отдельных phpunit.xml и файлы начальной загрузки из модулей, своего рода наследование конфигурации 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
Robert Basic придумал скрипт, который создает структуру каталогов с отчетами модуля внутри, и он отлично работает, но было бы неплохо, чтобы он работал внутри PHPUnit с правильной отчетностью метрик.
2 ответов
Если вы используете Linux, вы можете создать простой скрипт. Не совсем то решение, которое вы хотели, но тем не менее могли помочь:
#!/bin/sh
modDir=$(pwd)
for i in *; do
if [[ -d $i/test ]]; then
cd $i/test
phpunit
cd $modDir
fi
done
вы можете просто бросить это в a runtests.sh файл в каталоге модуля.
просто мысль :)
ранее обсудив это на irc с различными людьми, я уверен, что вы не можете, вам нужно написать сценарий для цикла через модули и запустить их по модулю по модулю.