У меня следующая структура папок:
/main
/loader.php
/build.xml
/components
/package1
/class1.php
/package2
/class2.php
/tests
/package1
/class1.test.php
/package2
/class2.test.php
Когда я запускаю веб-приложение, я сначала загружаю loader.php
и включаю другие компоненты, вызывая Loader::load( 'package_name' )
. Затем все необходимые файлы включены. Хорошо, что мне не нужно включать loader.php
в файлы классов, потому что я могу рассчитывать на наличие рабочего экземпляра Loader
.
Классы Unit Test моделируют это поведение, явно включая все необходимые классы. Так что нет проблем с phing и PHPUnit.
Но теперь я хочу создать отчет о покрытии с помощью phing и Xdebug. Проблема в том, что phing загружает каждый PHP-файл для создания базы данных покрытия. К сожалению, он останавливается, потому что не может найти класс Loader
, который используется в файлах PHP.
Я мог бы легко добавить оператор include
к каждому файлу класса, но мне интересно, есть ли способ включить файлы, только если анализ покрытия кода проверяет файл?
Другая идея: я мог бы также настроить анализ покрытия таким образом, чтобы он сканировал каталог модульных тестов и, следовательно, находил все необходимые включения. Затем мне нужно отфильтровать классы, которые соответствуют шаблону, подобному /Test$/i
или около того. Возможно ли это?