问题标签 [pcov]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1106 浏览

phpunit - 使用除 xdebug 之外的其他代码覆盖率驱动程序

我想使用pcov而不是xdebug来生成代码覆盖率。

我正在使用 Docker,并且安装了 xdebug。

如果我运行以下命令,我可以确定 xdebug 不会影响测试执行吗?

我读到pcov 可能会更快,但据我所知,必须禁用 xdebug。

是否最好执行以下操作以实现最快的覆盖率而不是运行上述命令?

  1. 删除/截断 xdebug 配置
  2. 运行测试

    /li>
  3. 恢复 xdebug 配置

0 投票
0 回答
37 浏览

laravel - 合并由 browser-kit-testing 测试的 laravel 代码的代码覆盖率的奇怪行为

嗨人群情报!

我有不同的测试套件,它们在 teamcity 中以 .cov 文件作为工件进行并行处理,而一个构建配置可以合并代码覆盖。

奇怪的是:用 laravel 的 browser-kit-testing 方法测试的代码是这样的

将在测试套件本身的代码覆盖率中正确显示

只有真正的代码行被标记为覆盖 - 大括号是白色的

但是在将代码覆盖率与其他结果合并后,这些代码将不再被完全覆盖,因为大括号和其他结构代码被标记为未执行

在合并结构代码(如不应计入代码覆盖范围的大括号)后标记为红色

我们的设置:

  • 运行 phpunit 9
  • 用php7.4
  • 和 laravel 6.x
  • 在 docker 容器中
  • 使用基于 alpine 的自定义图像
  • 通过 pcov 进行代码覆盖(比 xdebug 快得多)
  • 一开始它在这个星座中工作得很好
  • 也许 pcov / phpunit / laravel / browser-kit-testing 中的任何更新导致了这个问题?!
  • 但我们不知道为什么它在单个覆盖输出中有效,但在合并中无效
  • 通过 phpcov 合并
  • 还尝试了 nimut/phpunit-merger - 结果相同
  • 使用默认 phpunit-methods 测试的其他代码(例如一些服务类)在合并后也被完美覆盖......似乎只有 browser-kit-testing 覆盖的代码在 .cov-file 中没有明确定义?!

任何有同样问题(或更好:解决方案)的人?

0 投票
0 回答
107 浏览

php - 替换 PHP 中的 xdebug_get_headers() 函数

我有一个庞大的项目,测试需要很长时间。XDebug我想通过从 切换到 来加快速度PCOV。我看到了巨大的速度提升,但我有一个问题。在我的测试中的一些地方,我xdebug_get_headers()用来测试标题(显然)。对于 PCOV,此功能不可用,因此我正在寻找替换的想法。

我试过headers_list()了,但它在 CLI 上不起作用。我怎样才能使它工作?可能无需进行大量重写。

0 投票
3 回答
1655 浏览

xdebug - PHPUnit 给出没有代码覆盖驱动程序可用

我有一个 laravel 项目,我试图运行phpunit给我一份覆盖率报告。我运行了命令vendor/bin/phpunit --coverage-html storage/test-output-data/coverage-html,它给出了输出:

我试图通过执行来解决这种情况sudo pecl install pcov,但是运行 phpunit 仍然给出了上面相同的错误。

我注意到我有文件/usr/lib/php/20170718/pcov.so。所以我将该行添加extension=/usr/lib/php/20170718/pcov.so到我的/etc/php/7.4/cli/php.ini文件中。但是当我输入时php -v,我得到了这个错误:

我也有一个名为的文件夹,/usr/lib/php/20190902但它没有pcov.so文件。

我也试过做 a sudo pecl install xdebug,但我遇到了与上面类似的错误,其中 phpunit 说没有驱动程序并且键入php -v说一些全局变量丢失,类似于 pcov 问题。

我究竟做错了什么?

0 投票
1 回答
741 浏览

phpunit - 如何使用 pcov 获得代码覆盖率报告?

我使用 PHP 8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。当在我的 XML 配置文件中,我使用这个:

(这只是我文件的相关部分)

...并从 PHPStorm 启动命令“Run with coverage”,它不会生成覆盖率报告。

我已停用 XDebug。PHPStorm 向我展示:

警告:必须设置 XDEBUG_MODE=coverage 或 xdebug.mode=coverage

我不知道为什么它提到 XDebug,因为我想使用 pcov,因为我在“运行/调试配置”弹出窗口中设置了它。我尝试将报告放在另一个文件夹中,尝试生成 HTML 报告...通过终端启动命令...这些都不起作用。我在 Google 上没有找到任何关于我的问题的信息。

编辑

我尝试了根本没有加载 XDebug 和这个简化的配置(使用--generate-configuration参数创建)并添加了前面的代码(没有路径覆盖)。

即使图书馆说它仍然不起作用:

生成 Clover XML 格式的代码覆盖率报告...

0 投票
0 回答
114 浏览

php - 无法让 PCOV 使用 Xampp 在 Windows 上进行手动测试

我试图让 PCOV 与在带有 XAMPP 的 Windows 机器上的 PHP 7.4.13 上运行的 PHP 应用程序 (Drupal) 一起工作。

我从https://windows.php.net/downloads/pecl/releases/pcov/1.0.9/php_pcov-1.0.9-7.4-ts-vc15-x64.zip安装了 PCOV 1.0.9 线程安全版本并复制过来php_pcov.dll 到 xampp 下的 php/ext 文件夹,并在 php.ini 中启用它。我在 php.ini 中有以下配置

我的 index.php 中有以下代码

我看到外观 php 文件是在相应的文件夹中创建的,但是当我尝试使用以下代码创建组合报告时,我看到 0 代码覆盖率,当我查看源视图时,所有行都显示为未执行。

为什么 PCOV 报告 0 代码覆盖率?PCOV 工作正常吗?还是我必须做更多的事情来启用手动测试的代码覆盖率测试?提前感谢您的投入。

该方法基于这篇文章 - https://tarunlalwani.com/post/php-code-coverage-web-selenium/

0 投票
0 回答
224 浏览

php - 为什么 PHPUnit + pcov 不生成代码覆盖率统计信息?

我将 PHPUnit 配置为使用 XDebug 生成代码覆盖率统计信息。看到 PCOV 更快,我禁用xdebug.so并安装了pcov.so.

现在,每当我运行单元测试时,生成的覆盖率报告都没有数字或名称或任何东西: 在此处输入图像描述

这是调用 phpunit 的脚本:

这是我的 phpunit.xml,它在从 XDebug 迁移到 PCOV 的过程中没有改变:

这是输出:

PHP 版本:7.3.11
PHPUnit 版本:9.5.6
PCOV 版本:1.09

是否需要为 PCOV 或 PHPUnit 进行一些额外的配置才能使覆盖率报告有用?

0 投票
0 回答
175 浏览

phpunit - 如何在 PhpStorm 中使用 PHPUnit 代码覆盖工具 PCOV

我使用 PHP 7.4.13、PhpStorm 2020.1.4、PHPUnit 9.5.8。

我尝试将 PHPUnit 代码覆盖工具与 PCOV 一起使用,但无法正常工作。

我安装了 pcov: pecl install pcov

我在 php.ini 文件中启用了扩展: extension="pcov.so"

我的 phpunit.xml 看起来像这样:

当我尝试运行时,phpunit --coverage-html coverage我得到以下信息:

结果 PHPUnit

我认为问题是缺少覆盖驱动程序。但是问题出在哪里,我该如何解决呢?

自3小时以来,我一直在尝试解决此问题,但我找不到方法。

我希望有人能帮帮忙 :)

0 投票
0 回答
22 浏览

php - php 单元测试代码覆盖率与有关 function_exists 的驱动器 Pcov 问题

在此处输入图像描述

if (!function_exists('birthday_to_age')) {

}

if (!function_exists('log_http_client_response')) {

}

覆盖率报告显示两行“if (!function_exists('function_name'))”未被覆盖,但“if”中的这两个函数被覆盖。很可笑,因为当我用xdebug做驱动的时候,这两行都被覆盖了,但是当我把驱动改成pcov,不做任何其他改动的时候,问题就出现了。

有没有人遇到过这个问题?有人知道如何覆盖这两条线吗?

谢谢

0 投票
0 回答
14 浏览

php - PHPUnit 代码覆盖率不包括报告中的文件夹

./app我有一个项目,我在文件夹上运行 phpunit,代码覆盖率很高。这工作正常,phpunit.xml文件有这个部分。

从那时起,我改变了结构并制作了命名空间模块。现在代码覆盖率根本不包括模块。我的phpunit.xml部分现在看起来像这样。

更改后,./app报告中仅显示文件,没有任何其他文件的指示。甚至报告根是/app. 我尝试了几种配置,例如仅用./module作目录,但没有任何效果。

phpunit.xml正在读取该文件,因为该生成对文件中的更改作出反应。

如何在报告中包含其余文件?

PHPunit 版本为 9.5.13,XDebug 版本为 3.0.3,Code Coverage 版本为 1.0.8