I've been playing with PHPUnit a lot of
late, particularly with
framework development.
One thing that's always hard to determine is how well your code is exercised
-- basically, how much of the code is tested in the unit tests?
In PHPUnit 3, you can now generate code coverage reports using
XDebug, and the usage is very simple:
matthew@localhost:~/dev/zend/framework-svn/tests$ phpunit --report ~/tmp/report AllTests
The above command creates a coverage report directory 'report' under my tmp
directory. You can then browse through the reports in a web browser and
visually see which lines of code were executed during tests, and which were
not, as well as a synopsis showing the percentage of coverage for any given
file or directory -- useful stuff indeed!
So, what's the problem? Getting XDebug running.
The executive summary:
For the detailed narrative, read on.
First off, I tried installing XDebug using pecl and pear. Even though my
'pear config-show' showed my correct PHP install and extension directory,
for some reason it found the PHP 4.4.1 installation I have elsewhere in the
filesystem, and it compiled against that. So, I followed the directions for
compiling by hand, and all was mostly well. I discovered, however, that you
need to specify the --with-php-config=/path/to/php-config switch
to ensure that it uses the appropriate php-config (particularly if you have
multiple PHP installs on your system).
Next up was getting it to work with PHP. I edited my php.ini file, and did a
standard extension=xdebug.so. What was odd is that I then showed
xdebug as present (using php -m), but not as a Zend extension. I
tried zend_extension=xdebug.so, but then nothing showed. Then, in
the end, I followed the instructions, and used
zend_extension=/full/path/to/xdebug.so, and it was available.
Okay, let's test it out... I started running tests and... segmentation
fault. Disabling the extension brought everything back to normal... only
when enabled did the segmentation fault occur. I decided to look at the
xdebug php.ini settings to see what I could find.
After some trial and error, I discovered that setting
xdebug.default_enable = Off fixed the issue, and I was able to
start generating some wonderful coverage reports.
Now, to write more tests...
Getting XDebug working with PHPUnit for code coverage reports I've been playing with PHPUnit a lot of late, particularly with framework development. One thing that's always hard to determine is how well your code is exercised — basically, how muc...
Tracked: Dec 29, 09:18