我最近一直在玩PHPUnit,尤其是在框架开发方面。始终难以确定的一件事是您的代码的执行情况——基本上,单元测试中测试了多少代码?
在PHPUnit3中,您现在可以使用XDebug生成代码覆盖率报告,而且用法非常简单:
matthew@localhost:~/dev/zend/framework-svn/tests$ phpunit --report ~/tmp/report AllTests
上面的命令在我的tmp目录下创建了一个覆盖率报告目录report
。然后,您可以在Web浏览器中浏览报告,并直观地查看在测试期间执行了哪些代码行,哪些没有执行,以及显示任何给定文件或目录的覆盖率百分比的概要——确实很有用!
那么,问题是什么?让XDebug运行。
执行摘要:
-
使用
zend_extension=/full/path/to/xdebug.so
启用扩展,而不是extension=xdebug.so
,在你的php.ini
-
在
php.ini</code中使用设置
xdebug.default_enable=Off
>. -
如果使用pecl或pear进行编译,请确保它针对正确的PHP进行编译;如果没有,请使用以下命令手动编译它:
$ /path/to/phpize $ ./configure --with-php-config=/path/to/php-config $ make $ make install
有关详细叙述,请继续阅读。
首先,我尝试使用pecl和pear安装XDebug。尽管我的pearconfig-show
显示了我正确的PHP安装和扩展目录,但出于某种原因,它发现了我在文件系统其他地方安装的PHP4.4.1,并根据它进行了编译。所以,我按照说明进行了手工编译,一切都很好。但是,我发现您需要指定--with-php-config=/path/to/php-config
开关以确保它使用适当的php-config(特别是如果您的系统上安装了多个PHP)。
下一步是让它与PHP一起工作。我编辑了我的php.ini
文件,并做了一个标准的extension=xdebug.so
。奇怪的是,我随后将xdebug显示为存在(使用php-m
),但不是作为Zend扩展。我尝试了zend_extension=xdebug.so
,但没有任何显示。然后,最后,我按照说明,使用了zend_extension=/full/path/to/xdebug.so
,就可以使用了。
好的,让我们测试一下……我开始运行测试和……分段错误。禁用扩展使一切恢复正常......只有在启用时才会发生分段错误。我决定查看xdebugphp.ini
设置,看看我能找到什么。
经过反复试验,我发现设置xdebug.default_enable=Off
可以解决问题,并且我能够开始生成一些出色的覆盖率报告。
现在,要编写更多测试......