首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用phpdbg度量简单脚本的覆盖率

尝试用phpdbg度量简单脚本的覆盖率
EN

Stack Overflow用户
提问于 2021-10-26 10:51:47
回答 1查看 84关注 0票数 1

我试图使用phpdbg来度量没有测试框架的测试覆盖率。

我的测试脚本如下所示:

代码语言:javascript
复制
$ cat hello.php
<?php

if (0) {
  echo "bye\n";
} else {
  echo "hello\n";
}

所以它只会像这样打印你好:

代码语言:javascript
复制
$ php hello.php 
hello

顺便说一下,这是我的php版本。

代码语言:javascript
复制
$ 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来度量这个脚本的测试覆盖率,这就是我想出的

代码语言:javascript
复制
$ mkdir coverage
$ phpdbg -qrr hello.php --coverage-html coverage
hello
$ find coverage
coverage/

目录为空

我希望能在里面找到一份报道

有人知道我该怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2021-11-04 05:32:12

我对PHP中代码覆盖率工作方式的理解是,调试器( phpdbgXdebug)生成每一行的日志,而phpunit能够使用该日志来综合您期望的输出(带有颜色行的HTML页面表示该特定行被击中了多少次等)。实际上,--coverage-html参数不是phpdbg的,而是phpunit的。这个职位展示了一个完整命令行的示例,其中最起码的版本是:

代码语言:javascript
复制
phpdbg \
  -qrr vendor/phpunit/phpunit/phpunit \
  -c phpunit.xml \
  --coverage-html coverage

但是很明显,这涉及到phpunit的使用和要运行的测试,这不适合您的用例。

我开始好奇这一切是如何工作的,并将这个玩具覆盖工具放在一起,它适用于您提供的非常简单的脚本。输出内容类似于:

代码语言:javascript
复制
 | <?php
 | 
1| if (0) {
0|     echo "bye\n";
 | } else {
1|     echo "hello\n";
 | }

但是,如果您查看一下Profiler::render_coverage,就会发现将它改编成任何您想要的输出格式并不是太棘手。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69721751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档