PHPUnit позволяет вам реализовать свой собственный TestListener . Пользовательские слушатели теста реализуют абстрактные методы в интерфейсе PHPUnit_Framework_TestListener . В частности, ваш слушатель будет реализовывать:
- startTestSuite ()
- endTestSuite ()
- StartTest ()
- endTest ()
- addError ()
- addFailure ()
- addSkippedTest ()
Как только вы подключите TestListner, эти методы будут вызываться каждый раз, когда в вашем наборе тестов происходят соответствующие события. Эти методы будут написаны для выполнения INSERT и UPDATEs в базе данных результатов теста, которую вы создадите.
Присоединить класс слушателя к вашему набору так же просто, как добавить тег в файл конфигурации phpunit.xml . Например:
<phpunit>
<testsuites>[...]</testsuites>
<selenium>[...]</selenium>
<listeners>
<listener class="Database"
file="/usr/loocal/share/pear/PHPUnit/Util/Log/Database.php">
</listeners>
</phpunit>
Это все, что вам нужно!
Фактически, PHPUnit уже поставляется с рабочей версией слушателя, который я только что описал ( PHPUnit_Util_Log_Database ), а также с двумя различными определениями схемы базы данных.
Во многих системах этот класс будет жить по / usr / loocal / share / pear / PHPUnit / Util / Log / Database.php , а схемы по / usr / loocal / share / pear / PHPUnit / Util / Log / Database / MySQL.sql и / usr / loocal / share / pear / PHPUnit / Util / Log / Database / SQLite3.sql . Возможно, вам придется внести некоторые изменения в зависимости от используемой СУБД.
Смотрите эти разделы документации (я не буду публиковать две ссылки:
http://www.phpunit.de/manual/3.4/en/extending-phpunit.html#extending-phpunit.PHPUnit_Framework_TestListener
HTP: //www.phpunit.de/manual/3.4/en/api.html#api.testresult.tables.testlistener
(StackOverflow не позволяет мне публиковать две ссылки, поэтому вам придется исправить HTTP во второй)