我试图使用phpdbg来度量没有测试框架的测试覆盖率。
我的测试脚本如下所示:
$ cat hello.php
<?php
if (0) {
echo "bye\n";
} else {
echo "hello\n";
}所以它只会像这样打印你好:
$ php hello.php
hello顺便说一下,这是我的php版本。
$ php --version
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies我试图猜测如何使用phpdbg来度量这个脚本的测试覆盖率,这就是我想出的
$ mkdir coverage
$ phpdbg -qrr hello.php --coverage-html coverage
hello
$ find coverage
coverage/目录为空
我希望能在里面找到一份报道
有人知道我该怎么做吗?
发布于 2021-11-04 05:32:12
我对PHP中代码覆盖率工作方式的理解是,调试器( phpdbg或Xdebug)生成每一行的日志,而phpunit能够使用该日志来综合您期望的输出(带有颜色行的HTML页面表示该特定行被击中了多少次等)。实际上,--coverage-html参数不是phpdbg的,而是phpunit的。这个职位展示了一个完整命令行的示例,其中最起码的版本是:
phpdbg \
-qrr vendor/phpunit/phpunit/phpunit \
-c phpunit.xml \
--coverage-html coverage但是很明显,这涉及到phpunit的使用和要运行的测试,这不适合您的用例。
我开始好奇这一切是如何工作的,并将这个玩具覆盖工具放在一起,它适用于您提供的非常简单的脚本。输出内容类似于:
| <?php
|
1| if (0) {
0| echo "bye\n";
| } else {
1| echo "hello\n";
| }但是,如果您查看一下Profiler::render_coverage,就会发现将它改编成任何您想要的输出格式并不是太棘手。
https://stackoverflow.com/questions/69721751
复制相似问题