Как объединить тесты модуля блока/приложения 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 с правильной отчетностью метрик.

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

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