Удаленный сбор кода покрытия в PHP - PullRequest
6 голосов
/ 24 ноября 2011

В нашем проекте мы запускаем PHPUnit тестов, которые используют Selenium и Curl для открытия страниц на другом сервере разработки.Сервер B имеет сервер Apache, на котором работает веб-сайт.Сервер A запускает тестовое задание, синхронизируя ( Rsync ) файлы проекта с сервером разработки B, поэтому файлы проекта идентичны на обоих серверах.

Какие возможности существуют для удаленного доступасбор статистики покрытия кода в PHP?

Мы уже используем Xdebug для сбора покрытия кода в модульных тестах, которые выполняются локально на сервере A (PHPunit использует файлы проекта напрямую и поэтому может запуск / остановка сбора отчета о покрытии кода )

Обновление:

На сервере B веб-сайт отображается экземпляром PHP, запущенным Apache,При запуске тестов с использованием Selenium / Curl экземпляра PHP на сервере A используется версия командной строки.Этот экземпляр не может профилировать экземпляр PHP, который Apache запускает на сервере B.

При запуске модульных тестов (без использования другого сервера и без использования Selenium / Curl) мы используем такую ​​команду:

phpunit --coverage-html ./results/codecoverage/ ATestFile.php

Это создает отчет о покрытии кода для теста в "ATestFile.php" с использованием Xdebug в PHP Cli.

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Проект PHPUnit-Selenium на Github имеет решение для этого, и я считаю, что более старая версия, встроенная в PHPUnit 3.5, имела то же самое.В папке PHPUnit_Extension_Selenium_TestCase есть файлы , которые вы используете для сбора информации о покрытии кода на сервере B. Вам необходимо настроить Apache для добавления и добавления двух PHP-сценариев - точно названных prepend.php и append.php - к каждому запросу.

Инструкции находятся в разделе документации PHPUnit по Selenium .Искать "append".

1 голос
/ 26 ноября 2011

OP запросил альтернативы, которые могут генерировать отчеты с сервера B.

Наш Инструмент тестирования PHP PHP собирает данные покрытия тестирования способом, полностью независимым от PHPUnit (используйте его или нет, каквы считаете нужным) и / или XDebug (вообще не использует XDebug).

Это означает, что вы можете использовать свой код любым способом, который считаете полезным (включая внешние запросы от сервера A), и получать покрытие кодаdata.

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

...