我正在尝试使用以下命令使用PHPUnit和phpdbg为我的PHP项目生成代码测试覆盖:
phpdbg -dmemory_limit=512M -qrr ./bin/phpunit -c .phpunit.cover.xml
Run Code Online (Sandbox Code Playgroud)
这非常好用:
PHPUnit 6.2.4 by Sebastian Bergmann and contributors.
........ 8 / 8 (100%)
Time: 114 ms, Memory: 14.00MB
OK (8 tests, 13 assertions)
Generating code coverage report in HTML format ... done
Run Code Online (Sandbox Code Playgroud)
但是,当我在docker容器中使用完全相同的命令时:
docker run -it --name YM4UPltmiPMjObaVULwsIPIkPL2bGL0T -e USER=sasan -v "/home/sasan/Project/phpredmin:/phpredmin" -w "/phpredmin" --user "1000:www-data" php:7.0-apache phpdbg -dmemory_limit=512M -qrr ./bin/phpunit -c .phpunit.cover.xml
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
PHPUnit 6.2.4 by Sebastian Bergmann and contributors.
[PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to …Run Code Online (Sandbox Code Playgroud) 我真的很喜欢使用php内置服务器,我真的很喜欢phpdbg的外观.这让我想起了Ruby领域的撬.但是我一直无法让它发挥作用.是否可以phpdbg在Web服务器中运行构建用户?
例如,我怎么会喜欢这样的工作:
phpdbg_break(); 代码中php -S localhost:8000 phpdbg_break(); 当我尝试这个时,我得到phpdbg_break();一个未定义函数的错误.
或者(如果上述情况不可能),你如何使用文档所谈论的"webmocking" (在底部)?如何使用特定URI发出特定请求?
我用PHPUnit得到了错误的代码覆盖率报告,我相信这是XDebug的一个错误.
如何配置PHPUnit以使用其他驱动程序,即PHPDBG?
(我使用的是PHPUnit 4.7.7和PHP 5.5.12)
我有一台 32GB 的机器,运行超过 2000 个测试用例,使用 phpdbg 进行代码覆盖。
phpdbg -qrr -d memory_limit=-1./vendor/phpunit/phpunit/phpunit --debug --verbose
Run Code Online (Sandbox Code Playgroud)
运行一段时间后,它抛出以下错误甚至memory_limit是-1
map() 失败:[12] 无法分配内存 [PHP 致命错误:内存不足(已分配 5830606848)(尝试分配 65536 字节)]
由于我仍然对PHPUnit / PHP代码覆盖率和Xdebug感到烦恼,因此我决定尝试另一种方法-使用phpdbg。
我这样做是因为票数所示。在CMD和Git Bash中尝试过,但结果相同,但失败了:
$ composer info | grep "phpunit"
phpunit/php-code-coverage 4.0.0 Library that provides collectio...
phpunit/php-file-iterator 1.4.1 FilterIterator implementation t...
phpunit/php-text-template 1.2.1 Simple template engine.
phpunit/php-timer 1.0.8 Utility class for timing
phpunit/php-token-stream 1.4.8 Wrapper around PHP's tokenizer ...
phpunit/phpunit 5.4.6 The PHP Unit Testing framework.
phpunit/phpunit-mock-objects 3.2.3 Mock Object library for PHPUnit
$ phpdbg -qrr ./vendor/bin/phpunit -v
dir=$(d=${0%[/\\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)
# See if we are running …Run Code Online (Sandbox Code Playgroud)