如何多次运行 php 单元并连接覆盖率报告?

2023-11-26

我测试的代码充满了最终静态类。虽然我们无法重构它以进行更好的测试,但我有一个中间解决方案,可以在其自己的进程上运行几个小测试。一切正常。但我没有收到覆盖报告,因为其中一个覆盖了另一个。

我目前正在 clover 中生成报告,但我对其他报告非常开放。

我的测试仅在 phpunit 运行时有效:

/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/aTest.php
OK (1 test, 1 assertions)
/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/bTest.php
OK (1 test, 1 assertions)
/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/cTest.php
OK (1 test, 1 assertions)

但这将导致每次运行都会擦除前一次的报告。所以我只收到最后一份报告。如果我尝试运行它们,因为 phpunit 期望生成完整的报告,我会失败,因为我的所有类都包含它们自己的静态类。

/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/
. (first test pass)
PHP Fatal error:  Cannot redeclare class Something
make[1]: *** [phpunit_run] Error 255

(但即使使用上面的方法也会失败--process-isolation --no-globals-backup因为不完全是他们的意思...) -- 这不是另一个关于如何在 php 单元上正确进行进程隔离的问题。我可以运行几次,我只想要一份完整的覆盖率报告:)

有没有办法让测试像第一个代码块一样正确运行(即在多个进程上以避免全局类声明空间被污染),但仍然有全面的代码覆盖率报告?

谢谢你!


施莱斯的回答对我不起作用。在我的例子中,unserialize() 方法抛出一个错误:Error at offset...

然而,有一个非常简单的方法可以实现这一目标:

按照描述下载 phpcovhere.

让 phpunit 生成 php 覆盖率报告:

phpunit --coverage-php coverage/cov/foo.cov tests/foo
phpunit --coverage-php coverage/cov/bar.cov tests/bar

现在您有 2 个 .cov 文件。然后在你最喜欢的 shell 中:

phpcov merge --clover clover.xml /coverage/cov

它将生成一个 clover.xml 报告文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何多次运行 php 单元并连接覆盖率报告? 的相关文章

  • 如何访问带有美元符号的 PHP 对象属性?

    我有一个 PHP 对象 其属性中有一个美元 符号 如何访问该属性的内容 例子 echo object gt variable Ok echo object gt variable WithDollar Syntax error With 变
  • PHP7.1上读取会话数据失败

    分享一个我遇到的问题 现已解决 在我的开发机器上 我使用 PHP 运行 IIS 我升级到 PHP7 突然我的代码不再工作 返回此错误 session start 读取会话数据失败 用户 路径 C WINDOWS temp 看起来像是权限问题
  • 我可以在 php 中的 SESSION 数组上使用 array_push 吗?

    我有一个想要在多个页面上使用的数组 因此我将其设为 SESSION 数组 我想添加一系列名称 然后在另一个页面上 我希望能够使用 foreach 循环来回显该数组中的所有名称 这是会议 SESSION names 我想使用 array pu
  • Ace Editor 自动完成和多种语言

    如何为 Ace 编辑器创建自动完成功能以及如何突出显示 php 中的 html javascript 和 csshttp ace ajax org http ace ajax org
  • snappy wkhtmltopdf 包装器将生成的 html 文件发送到浏览器

    我像鼹鼠一样用谷歌搜索 但找不到正确的方法 我正在使用 WKHTMLTOPDF Wrapper Snappy 创建 PDF 如何将使用generateFromHtml方法生成的pdf直接发送到浏览器 这就是我想做的 header Conte
  • PHP 可以解压缩使用 .NET GZipStream 类压缩的文件吗?

    我有一个 C 应用程序 它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可 我现在正在开发一个反馈系统 供用户通过软件自动提交错误和跟踪日志 根据我之前发布的问题 我认为 Web 服务将是实现此目的的最佳方法 最有可能以最
  • 如何在 Yii2 应用程序中显示多个选择下拉列表中的选定值?

    我正在研究 Yii2 我正在使用这样的自定义数组创建多个选择下拉菜单 在控制器文件中 all groups Groups find gt where group created by id gt orwhere new Expression
  • Cron 作业的远程地址问题

    我需要获取访问者的IP 但是当cron运行时 它发现REMOTE ADDR是一个未定义的索引 事实上 当文件与 cron 一起运行时 没有远程地址 我该如何避免这个问题 PHP 有没有办法说 如果 REMOTE ADDR 存在则考虑它 如果
  • 通过 PEAR 安装 PHPUnit

    我安装时遇到问题PHPUnit 3 4 6 via 梨1 9 0 当我发现频道后pear phpunit de并尝试使用以下命令之一 pear 安装 phpunit PHPUnit pear 安装 alldeps phpunit PHPUn
  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • Symfony 4 生产模式错误处理页面内存耗尽

    我将我的项目设置为prod模式在 env除了自定义错误页面之外的所有内容似乎都有效 我将此作为我的 404 树枝模板 templates bundles TwigBundle Exception error404 html twig inc
  • Monolog:通过邮件发送错误日志会导致每个发送的错误都会收到一封额外的邮件

    对于通过邮件发送的每个错误日志 我们都会收到另一封额外的电子邮件 其中包含 2 行 smtp 调试日志消息 新创建的 symfony 演示 symfony new demo 配置独白以通过邮件发送错误消息 如docs https symfo
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • 如何处理致命错误:cURL错误7:无法连接到xxxx端口443

    我有一个连接到第三方 API 的脚本 它是并且应该在 24 7 不间断循环上运行 我在重新启动循环之前在最后使用睡眠 问题是 有时第三方 API 会被拒绝 或者连接会因以下错误而中断 致命错误 未捕获的异常 GuzzleHttp Ring
  • 无需编译的 ES6 单元测试

    我无法找到任何 Mocha 或任何其他通过 Gulp 直接在 ES6 代码上运行的单元测试框架的示例 没有 Babel Webpack 等 我找到了一个在浏览器中使用 ES6 代码运行 Mocha 的示例 经过一些修改 但它不是自动化的 有
  • Swift 单元测试 - 如何断言 CGColor 是它应该的样子?

    使用 Xcode V7 2 尝试进行单元测试 需要验证是否已设置正确的颜色 并收到以下消息 Cannot invoke XCTAssertEqual with an argument list of type CGColor CGColor
  • Laravel 5 命名约定

    我对 Laravel 约定有点困惑 因为我是这个框架的新手 我正在关注 Jeffrey Way 他使用的 Laracasts 视频Plural对于控制器名称 E g 页面控制器 卡片控制器 帖子控制器 但如果我参考官方文档Laravel g
  • Laravel 4.2 Composer 安装错误:“无法扫描类”

    我想通过 Composer 在新的 Laravel 4 2 安装上安装一些软件包 但是 我遇到了例外 这是我的作曲家文件 name laravel laravel description The Laravel Framework keyw

随机推荐

  • 使用 js (jquery) 查找所有 YouTube 链接

    假设有一个包含内容和 YouTube 链接的 div 我想获取该 YouTube 链接并将其嵌入 div p Here is a cool video Check it out http www youtube com watch v oH
  • mysql 选择没有表的日期

    我只需要返回一个月内所有日期的列表 我没有访问特定的表 所以我需要一个 sql select 语句 如果给定二月份 则返回以下内容 Day 2011 02 01 2011 02 02 2011 02 03 etc etc 2011 02 2
  • 什么是好的 PHP 模板系统? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 集成 PHP 的最好 最简单的模板系统是什么 使用它有什么好处 我目前根本不使用它 并且我认为这可能有助于将内容与演示文稿进一步分离 PHP 本身就
  • cartopy set_xlabel set_ylabel (不是刻度标签)

    使用 cartopy 地图时 我无法添加 xlabel 或 ylabel 有没有办法做到这一点 我不是在寻找刻度标签 import matplotlib pyplot as plt import cartopy ax plt axes pr
  • 使用导航组件重新加载片段

    我正在使用导航组件加载我的片段 如下所示 https developer android com guide navigation navigation getting started navController findNavContro
  • SQL 查询中的 IF 条件

    我是 SQL Server 的新手 请帮我在查询中编写以下逻辑 If getnow gt today 4 PM Then SELECT FROM table WHERE MailDate is Tomorrow Else SELECT FR
  • Haskell 中函子如何工作?

    我正在尝试学习 Haskell 并且我已经完成了所有基础知识 但现在我陷入困境 试图了解函子 我读过 函子将一个类别转换为另一个类别 这是什么意思 我知道有很多问题要问 但有人可以给我一个吗简单的英语函子的解释或者可能是简单的用例 我不小心
  • 将存储过程返回值分配给 VBA 变量

    这应该很容易 但我还没有找到真正简洁的答案 我在 sql server 中有一个非常简单的存储过程 它返回一个整数值 我想要做的就是将该返回值放入变量中以便在 Access 中使用 存储过程 ALTER PROCEDURE dbo out
  • 检测计划关闭

    我有一个 cmd 脚本 它将执行一组补丁 它被设计为在需要重新启动时中止以避免补丁问题 我还想扩展脚本以在计划重新启动时中止 例如通过 shutdown 命令 以便尽可能避免在补丁中重新启动 不幸的是 除了尝试安排另一次关闭之外 我还没有找
  • Bitbucket 警告我的 git 存储库太大,但我无法确认大文件

    Bitbucket 警告我的 Git 存储库超过 1 GB 事实上 在存储库详细信息页面说它是1 7 GB 太疯狂了 我一定在版本控制中包含了大数据文件 我的本地存储库实际上是10 GB 这意味着至少我一直在使用 gitignore在某种程
  • Eclipse 中的 JPA 项目出现问题 - 注释 @Entity 的类中出现错误:无法解析表“xxx”

    我正在尝试在 Eclipse Indigo 中创建简单的 EJB JPA 项目 我创建了新的 EJB 项目 其中 目标 现有的 Glassfish 服务器 配置 EJB 模块 GlassFish 部署描述符文件 Java JPA 在窗口 J
  • ViewPager 的无尽适配器

    我一直在使用CWAC 的 EndlessAdapter实现ListViews的无限滚动 我想完成 ViewPager 的同等功能 不幸的是 PageAdapter 和ListAdapter 不共享相同的公共基类 解决这个问题的最佳方法是什么
  • Java:尝试编译 Hadoop 程序时未找到 com.sun.tools.javac.Main

    当我尝试使用此命令在 Hadoop 中编译程序时 bin hadoop com sun tools javac Main WordCounter java 从 Hadoop 文件夹中 它说 Error Could not find or l
  • 在 UIPopoverController 的页脚中使用 UISegmentedControl

    在我的 iPad 应用程序取景器中 iTunes 链接 我正在尝试重新创建 UISegmentedControl 的外观 如 Keynote 的 内置 弹出窗口的页脚中所示 iPad HIG 建议使用底部对齐的 UIToolbar 但外观不
  • 复选框检查事件监听器

    最近我一直在使用 Chrome 插件 API 我希望开发一个插件 这将使我管理网站的生活变得更轻松 现在我想做的是在选中某个复选框时触发一个事件 由于这个网站不属于我 我无法更改代码 因此我使用 Chrome API 主要问题之一是没有 I
  • 从 python 数据帧的列构造二分图

    我有一个包含三列的数据框 data subdomain data domain data IP 我想为子域的每个元素构建一个二分图 对应同一个域 权重为它出现的次数 对应 例如我的数据可能是 subdomain domain IP test
  • TransferRequestHandler 和 BeginRequest 的性能问题

    我已经开始使用 New Relic 来监控性能http alternativeto net那是一个相当大的网站 我注意到的是 他们报告为 TransferRequestHandler 的方法花费了大量时间 当我深入研究它时 我发现实际上是
  • 二元炸弹 - 第 4 阶段

    我很难追踪以下二进制炸弹的汇编代码 学校的一项作业 其中必须拆除炸弹 该炸弹包含 6 个阶段 所有阶段都有 1 个正确的输入才能进入下一阶段 我目前处于 Phase 4 它有一个名为 func4 的递归函数 我已经确定输入是 d d 它是两
  • 如何将文件传递到阻塞上游作业的下游作业?

    我想要完成的是签出代码develop分支 将其合并到master分支 建立app war 运行测试 如果测试成功则推送到master branch 测试应该在需要的单独作业中运行app war 我当前的设置如下 Job Main结帐自dev
  • 如何多次运行 php 单元并连接覆盖率报告?

    我测试的代码充满了最终静态类 虽然我们无法重构它以进行更好的测试 但我有一个中间解决方案 可以在其自己的进程上运行几个小测试 一切正常 但我没有收到覆盖报告 因为其中一个覆盖了另一个 我目前正在 clover 中生成报告 但我对其他报告非常