LaD*_*ude 58 phpunit code-coverage laravel-5.2
我想使用PHPUnit来创建代码覆盖率报告.我已尝试在网上找到很多安装设置.但似乎没有任何结果.
我使用最新版本的Laravel 5(> 5.2)和PHPUnit v.5.0.10.此外,我在运行PHP 7的Mac OS X 10.9.5上使用MAMP.
当我运行集成在Laravel发行版中的PHPUnit时,我收到以下错误.
$ vendor/bin/phpunit -v
PHPUnit 5.0.10 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.0
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml
Error: No code coverage driver is available`
Run Code Online (Sandbox Code Playgroud)
我的作曲家文件看起来像:
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "5.0.*",
"phpunit/php-code-coverage": "^3",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*"
},
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下命令:
/Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v
Run Code Online (Sandbox Code Playgroud)
这似乎很好地设置了代码覆盖率驱动程序,但最终会出现异常:
$ /Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v
PHPUnit 5.0.10 by Sebastian Bergmann and contributors.
Runtime: PHPDBG 7.0.0
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml
[PHP Fatal error: Uncaught ErrorException: include(/Applications/MAMP/htdocs/myProject/app/Exceptions/Handler.php): failed to open stream: Too many open files in /Applications/MAMP/htdocs/myProject/vendor/composer/ClassLoader.php:412
Stack trace:
...
Run Code Online (Sandbox Code Playgroud)
phpunit.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html" target="./tests/codeCoverage" charset="UTF-8"/>
</logging>
<filter>
<whitelist>
<directory suffix=".php">app/</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)
是否可以使用Laravel框架附带的PHPUnit和代码覆盖?我该如何设置并使用它?
非常感谢你的帮助.
Nen*_*nad 76
好像你错过了Xdebug扩展.如果你使用的是自制软件,你可以安装它:
brew install php70-xdebug
Run Code Online (Sandbox Code Playgroud)
之后,不要忘记编辑php.ini文件以启用扩展.
php -i | grep xdebug
Run Code Online (Sandbox Code Playgroud)
检查xdebug是否已启用后,您应该能够进行代码覆盖
对于 Windows 用户:
1) 下载xdebug
2) 将文件重命名为 _php_xdebug.dll_ 并将文件复制到php 安装中的ext文件夹,例如C:\Program Files (x86)\php\ext
3) 打开你的php.ini文件。对我来说,它位于C:\Program Files (x86)\php\php.ini。
4) 将以下代码粘贴到文件底部。
zend_extension = php_xdebug.dll
xdebug.remote_enable = 1
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_autostart = 1
xdebug.remote_port = 9000
xdebug.show_local_vars = 1
Run Code Online (Sandbox Code Playgroud)
这对我有用。请按照此步骤操作:
1.) 安装 php7.x-dev, (x) 是 Linux 服务器上的 PHP 版本
sudo apt-get install php7.x-dev
Run Code Online (Sandbox Code Playgroud)
2.) 在 Linux 上通过 PECL 安装 Xdebug
sudo pecl install xdebug
Run Code Online (Sandbox Code Playgroud)
3.) 添加以下 php.ini 文件。(您可以将其插入最后一行)
zend_extension="/wherever/you/put/it/xdebug.so"
Run Code Online (Sandbox Code Playgroud)
PHP 7.1的更新
xdebug对于代码查找和覆盖是必不可少的,因此必须在测试环境中安装或启用xdebug.生产环境中的xdebug不可建议,如果打开它会影响性能
brew install php71-xdebug
正如其他开发人员所回答的那样,您需要安装 PHP Xdebug,但我想为默认使用 homestead 的开发人员添加新的建议有 Xdebug(但它已关闭),您可以将其设为 ON 或 OFF
如果你想在宅基地使用下面的命令
#for on :
xon
#for off:
xoff
Run Code Online (Sandbox Code Playgroud)
然后检查php -v,您将在详细信息框中看到 Xdebug
| 归档时间: |
|
| 查看次数: |
47713 次 |
| 最近记录: |