开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

让 XDebug 与 PHPUnit 一起使用以获得代码覆盖率报告

我最近一直在玩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可以解决问题,并且我能够开始生成一些出色的覆盖率报告。

现在,要编写更多测试......

未经允许不得转载:我爱分享网 » 让 XDebug 与 PHPUnit 一起使用以获得代码覆盖率报告

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏