swoft自动化测试踩坑记录

作者:zarte    发布时间: 2020-09-05

swoftphpunitxdebug测试

## 前言 swoft项目最新版已整合phpunit,只需按照范例在/test/unit中编写单元测试用例,然后执行 ``` /usr/local/php7/bin/php test/run.php -c phpunit.xml ``` ## 生成覆盖率报告 Error: No code coverage driver is available 说明缺少xdebug驱动,需要zend驱动方式引入 ### xdebug安装 首先就是最大的坑,phpunit 需要xdebug支持才能生成覆盖率报告,但是swoole不支持xdebug。但是有个[sdebug项目](https://github.com/swoole/sdebug) php.7.3以下的使用[https://github.com/mabu233/sdebug/tree/sdebug]( https://github.com/mabu233/sdebug/tree/sdebug)版本 php.7.3以下的使用[ https://github.com/swoole/sdebug](https://github.com/swoole/sdebug)版本 安装说明编译安装后在php.ini中添加 ``` zend_extension=xdebug.so sdebug.coverage_enable=On ``` 这时候swoole已经可以正常运行了不会检测到xdebug, 执行php -v 查看 ``` PHP 7.1.8 (cli) (built: Aug 28 2017 14:33:21) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Sdebug v2.6.1-dev, Copyright (c) 2002-2018, by Derick Rethans ``` ### phpunit支持sdebug phpunit 检测的是xdebug,为了避免被swoole检测到sdebug的驱动名改为了sdebug,因此需要改变phpunit库中的部分检测代码。 1.\vendor\sebastian\environment\src\Runtime.php:174 ``` public function hasXdebug(): bool{    return ($this->isPHP() || $this->isHHVM()) && \extension_loaded('Xdebug'); } 改为 public function hasXdebug(): bool{    return ($this->isPHP() || $this->isHHVM()) && \extension_loaded('Sdebug'); } ``` 2.\vendor\phpunit\php-code-coverage\src\Driver\Xdebug.php:35 ``` if (!\extension_loaded('xdebug')) { throw new RuntimeException('This driver requires Xdebug'); } if (!\ini_get('xdebug.coverage_enable')) { throw new RuntimeException('xdebug.coverage_enable=On has to be set in php.ini'); } 改为 if (!\extension_loaded('sdebug')) { throw new RuntimeException('This driver requires Xdebug'); } if (!\ini_get('sdebug.coverage_enable')) { throw new RuntimeException('sdebug.coverage_enable=On has to be set in php.ini'); } ``` ini_get有可能有错可以直接忽略它的错误 ### 添加配置或者直接使用命令参数 修改phpunit.xml添加 ``` <logging> <log type="coverage-html" target="./tests/codeCoverage"/> </logging> ``` type为报告类型可以使用coverage-text文本直接显示的方式

上一篇:  whois 信息查询原理

下一篇:  mysql order 排序字段存在重复值导致分页异常

加载更多