Reporting Code Coverage with PHPUnit and XDebug

As a follow up to my previous post about debugging php I slightly changed the process and installed XDebug instead of Zend Debugger. This was mainly so that I could generate nice code coverage reports for my unit tests–and it was easy to setup.

To install xdebug all I had to do was:

% port install php5-xdebug

and then I edit my previous ini file to use xdebug instead:

zend_extension=/opt/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
xdebug.remote_enable=on
xdebug.default_enable=on
xdebug.remote_autostart=on
xdebug.remote_host=127.0.0.1,192.168.0/24,10.37.129.2,10.211.55.2

The only other change was that I selected XDebug instead of Zend Debugger as the engine in the debug profile I had previously setup in Zend Studio.

With XDebug, the debugging in Zend Studio is the same however I can now generate nice code coverage reports for my PHPUnit tests:

phpunit --coverage-html ./report MyTests.php

The report lets you view each individual file that was included in the execution:

Note: if you’re using this you may want to increase the memory assigned to your command line PHP ini file. The report generation is a memory hog so I bumped mine to 512MB just to be safe.