phpunit 单元测试之代码覆盖率

最近在不断完善项目中的单元测试用例,会用到代码覆盖率分析,原本觉得 homestead 应该默认安装了 xdebug ,因此使用 phpunit --coverage-html ./tests/codeCoverage 来生成 html 报告,可是执行后提示以下错误php

Error:         No code coverage driver is available

这是由于没有安装或启用 xdebug 致使。html

我的环境:ubuntu

PHP 7.2.0-1+ubuntu16.04.1 + Homestead单元测试

install xdebug

$ wget https://xdebug.org/files/xdebug-2.6.0.tgz
$ tar xvzf xdebug-2.6.0.tgz
$ cd xdebug-2.6.0
$ phpize7.2
$ ./configure --enable-xdebug
$ make
$ sudo make install

enable xdebug for php

find /usr/ -name "xdebug.so"
/usr/lib/php/20170718/xdebug.so  //刚刚安装的 xdebug 2.6.0 版本
/usr/lib/php/20131226/xdebug.so
/usr/lib/php/20160303/xdebug.so
/usr/lib/php/20151012/xdebug.so
vi /etc/php/7.2/cli/php.ini

添加以下代码到 php.ini 结尾处测试

zend_extension="/usr/lib/php/20170718/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.max_nesting_level = 500

build code coverage report

有两种方法:ui

1.直接执行 phpunit --coverage-html ./tests/codeCoverage 命令 2.在 phpunit.xml 添加以下代码:debug

<logging>
   <log type="coverage-html" target="./tests/codeCoverage" charset="UTF-8"/>
</logging>

而后直接执行 phpunit 便可。code

完成会在 tests/codeCoverage 目录下生成 html 报告,以下所示:xml

clipboard.png

经过这样的分析,可以更好的帮助咱们完善单元测试,保证代码测试的完整性,也能让咱们的代码更加健壮。htm

讨论交流

iBrand联系咱们

相关文章
相关标签/搜索