问题标签 [php-code-coverage]

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 投票
1 回答
1682 浏览

php - 如何让 PHP 代码覆盖率在 Windows 服务器上与 phpdbg 一起工作?

由于我在 PHPUnit/PHP 代码覆盖率和 Xdebug方面仍有问题,我决定尝试另一种方式 - 使用phpdbg

我按照他的指示做。在 CMD 和 Git Bash 中尝试过,但结果是一样的,它失败了:

如何让 PHPUnit & PHP Code Coverage & phpdbg 在 Windows Server 上工作?

0 投票
0 回答
188 浏览

jenkins - 报告获取错误链接,无法在 Jenkins 中找到

build.xml我的 Jenkins (PHP) 项目(托管在 Windows 服务器上)中,定义了多个报告(PMD 警告、重复代码、JDepend、Checkstyle 警告、覆盖率摘要报告、PHPUnit_Code_Coverage、PHPDox)。安装了所有需要的插件,菜单和仪表板上的大多数报告的链接

在此处输入图像描述

引导至相应的报告页面。

只有两个链接(PHPUnit Code Coverage 和 PHPDox)不起作用并显示一个404页面:

在此处输入图像描述

尽管它们似乎设置正确:

Jenkins - 项目设置 - 发布 HTML 报告

Jenkins MyProject 工作区

为什么会出现此问题以及如何使 Jenkins 将报告正确添加到项目的菜单/仪表板?

0 投票
1 回答
482 浏览

php - 未创建 PhpUnit 代码覆盖率 html 报告

我在命令下面运行以 html 形式创建代码覆盖率

它正在运行但未创建代码覆盖率报告。 在此处输入图像描述

0 投票
1 回答
1449 浏览

php - 如果设置 processUncoveredFilesFromWhitelist="true",如何从 PHP 单元中的代码覆盖处理中排除方法

我已设置phpunit.xml执行以下操作:

我运行测试:

但是,我希望永远不要在一个文件中对覆盖率进行评估,因为它会在我的文本测试覆盖率报告中输出一堆垃圾。假设类/方法被命名my\app\Response::render()

此方法的简化版本是:

render()方法发出一个header() 命令以及许多echo()命令,这些命令在运行覆盖率报告时会引发大量文本和错误--coverage-text

我尝试了以下方法:

  • 添加了注释@codeCoverageIgnore
  • 到我在 xml 中的白名单块,试图排除整个文件:<exclude><file>/my/app/Response.php</file></exclude>

既不阻止该方法被执行(以某种方式)。

我考虑过像在这个方法中添加一些代码来检查我们是否正在通过 phpunit 执行的黑客攻击,比如将代码包装在:

或者,就像使用一个好的旧$do_debug变量方法一样,phpunit在 phpunit.xml 中指定的 via 中传递一个环境变量以禁用此代码(这样,如果以后我想运行 phpunit 并让该方法执行,我只需切换环境变量即可)。

这些选项似乎都不优雅。我不喜欢修改我的代码来解决测试问题(我什至有点不高兴在我的方法中添加测试提示注释,我宁愿用某种白/黑名单来处理它)。

但是,当在经过严格审查的一组库中出现一些需要不太优雅的解决方案的感知限制时,我喜欢对照社区检查我的头,看看是否有什么被忽略了。

任何人都知道我如何才能防止这种方法在 Phpunit 的功能范围内被处理?

0 投票
2 回答
406 浏览

php - PHP 单元无法在带有 PHP5.6 的 Ubuntu 12.04 LTS 上运行

任何人都可以帮助我解决我的问题。我想在 php5.6 上运行 phpunit 但遇到了问题

梨包装安装

已安装的软件包,频道 pear.php.net:

包版本状态 Archive_Tar 1.4.0 stable Benchmark 1.2.9 stable Console_Getopt 1.4.1 stable PEAR 1.10.1 stable PEAR_Manpages 1.10.0 stable PHPUnit 1.3.2 stable Structures_Graph 1.1.1 stable XML_Util 1.3.0 stable

对于安装 PHPUnit,我确实在终端上运行了以下命令

因为:~$ sudo pear install phpunit/PHPUnit不工作。

我确实尝试添加:~$ pear channel-discover pear.phpunit.de,但它显示错误

谁能告诉我如何解决这个问题?

0 投票
1 回答
421 浏览

php - 为什么 PhpUnit dataProviders 会降低覆盖率?

我一直在使用 PhpUnit,效果很好,只用断言测试我的代码。最近我决定尝试使用 PhpUnit 进行覆盖率报告分析,但我注意到使用 dataProvider 方法的测试往往会降低我的代码覆盖率分数。我想知道我可能做错了什么,或者这是否是 dataProvider 测试技术的结果?我正在使用 PhpUnit 6 和 Php 7。

我已经包含了一个源类 Foo,下面有三个测试类来测试它。FooTest 使用常规测试方法,没有 dataProviders。BarTest 使用带有 @codeCoverageIgnore 注释的 dataProvider 方法,而 BazTest 使用没有注释的 dataProvider 方法。

您可以看到使用 BazTest 的代码覆盖率得分是如何降低的。

phpunit 调用的终端截图。

包含所有测试类的代码覆盖率报告屏幕截图。

带有 BazTest 详细信息的代码覆盖率报告屏幕截图。

Foo.php

FooTest.php:

BarTest.php:

BazTest.php:

phpunit.xml:

0 投票
1 回答
533 浏览

laravel - 如何设置 Laravel Boilerplate phpunit 以在 Homestead 环境中提供代码覆盖率

我有一个新的Laravel 样板在运行完美的Laravel Homestead环境中运行。该php -v命令正在向我返回此信息

我正在搜索如何设置 phpunit 的代码覆盖率以使其工作,并发现我需要 xDebug 才能使其工作。谷歌搜索了一下,找到了xon启用 xDebug 扩展的 homestead 命令。所以我运行它,发现 xDebug 扩展已启用,如新php -v显示:

我还需要添加 php-code-coverage 依赖项composer require --dev phpunit/php-code-coverage:4.0.8(特定版本,因为我在尝试安装最新版本时遇到了一些要求错误)。

然后我跑了phpunit --coverage-clover=coverage.xml,得到了这个致命错误:

我感觉这与 Laravel Facades 有关,这让我认为 phpunit 没有运行我的自动加载文件,但该属性默认bootstrap="bootstrap/autoload.php"存在于文件中。phpunit.xml

不知道从哪里开始,不知道哪里出了问题。

编辑:我的宅基地版本是 5.1.0

0 投票
1 回答
333 浏览

php - 如何直接使用 PHP_CodeCoverage 库?

我试图让PHP_CodeCoverage库为最简单的情况工作以创建 HTML 代码覆盖率报告,但失败了。我安装了 PHP 和 Xdebug。我宁愿不指定我正在使用的版本,因为我希望我忽略了一些简单的东西,但我会根据要求提供这些细节。现在,我只想说,我正在使用它们的非常新版本。

为了使它尽可能简单,我将它提炼成 2 个文件,但我仍然无法让它做我想做的事。这2个文件是composer在安装coverage库时自动生成的vendor/autoload.php,以及正在使用该库的文件。该文件位于project-root/src/CoverageTest.php. 自动加载文件位于project-root/vendor/autoload.php.

当我php src/CoverageTest.php从终端运行时,它会生成一个 HTML 报告。当我查看报告时,在代码覆盖率表中,只有一行设置为“n/a”或“0/0”。它不报告任何覆盖范围存在或缺失。它没有说任何关于特定文件、类、函数或行的内容。在很大程度上,您在此测试文件中看到的代码与其README 页面上的代码相同。这是代码:

0 投票
1 回答
727 浏览

mocking - PHPUnit 模拟类方法未显示在代码覆盖率报告中?

我正在magento2中开发一个php项目。我正在使用模拟对象来编写单元测试用例。我开始知道,当我生成代码覆盖率报告时,模拟的类和方法没有显示在代码覆盖率报告中,有什么方法可以显示这些吗?

我查看了官方回购,它被称为默认行为。

参考: https ://github.com/sebastianbergmann/phpunit-mock-objects/issues/123

非常感谢任何帮助!

谢谢

0 投票
0 回答
777 浏览

phpunit - 未生成代码覆盖率报告

运行命令时phpunit --bootstrap="TestHelper.php" --coverage-clover coverage.xml --whitelist="../../../" --debug --log-junit result.xml ./

它生成 result.xml 但控制台在此行之后卡住了。 生成 Clover XML 格式的代码覆盖率报告...

注意:我已经检查了关于 stackoverflow 的上一个问题。

我的 phpunit.xml :