在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用

2024-05-01

Quoting https://phpunit.readthedocs.io/en/9.5/writing-tests-for-phpunit.html#testing-php-errors-warnings-and-notices https://phpunit.readthedocs.io/en/9.5/writing-tests-for-phpunit.html#testing-php-errors-warnings-and-notices , "默认情况下,PHPUnit 将测试执行期间触发的 PHP 错误、警告和通知转换为异常“。考虑到这一点,这是我的单元测试:

<?php

class DemoTest extends PHPUnit\Framework\TestCase
{
    public function testDemo()
    {
        try {
            trigger_error('zzz', E_USER_DEPRECATED);
        } catch (\Throwable $e) {}
    }
}

当我跑步时vendor/bin/phpunit在 PHP 8.0.9 上使用 PHPUnit 9.4.0 我得到以下内容(输出的不相关部分已被删除):

PHPUnit 9.4.0 by Sebastian Bergmann and contributors.

R                                                                   1 / 1 (100%)

当我跑步时vendor/bin/phpunit在 PHPUnit 9.4.0 和 PHP 8.1.0 上,我得到以下信息:

Deprecated: PHPUnit\Runner\DefaultTestResultCache implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in C:\path\to\code\vendor\phpunit\phpunit\src\Runner\DefaultTestResultCache.php on line 34
PHPUnit 9.4.0 by Sebastian Bergmann and contributors.

R                                                                   1 / 1 (100%)

IE。在 PHP 8.1 中,就像我得到了 Throwable 的完整转储,包括堆栈跟踪,而在 PHP 8.0 中我没有得到它。

有任何想法吗?我不想在输出中看到错误,如果没有抛出异常,那么$this->expectException('PHPUnit\\Framework\\Error\\Deprecated')也不适合我


这是 PHPUnit 与 PHP 8.1 的不兼容问题,不久前已修复9.5.5 https://github.com/sebastianbergmann/phpunit/commit/3e3aecdeb1160de5500fa7715436e73689cc11a3,所以你需要更新。

9.4 不再是受支持的版本。

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

在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用 的相关文章

  • PHPUnit 找不到“TestCase”类

    要使用项目的 PHPUnit 运行测试 我执行以下操作 php vendor bin phpunit tests SomeClassTest php鉴于以下类声明 它可以正常工作 class SomeClassTest extends PH
  • 在 zend 框架中运行控制器单元测试时出现“没有为此应用程序定义默认模块”异常

    我有一个具有默认目录结构的应用程序 对于没有自定义模块的应用程序 请参阅最后的结构图 我按照许多教程中的说明编写了一个 ControllerTestCase php 文件 并且还创建了相应的引导文件 再次参见最后的图 我已经编写了一些运行良
  • Selenium2 + phpunit -> 拖放到 xpath 上

    我使用 PHPUnit Extensions Selenium2TestCase Selenium 和 phpunit 我需要在不同的 emelent 上拖放一个 xpath 元素 就像在此屏幕上一样 更改树 类别树 上的位置 srcDra
  • 在 PHPUnit 中进行模拟时,通过回调中的引用传递

    我有一个想要模拟的接口 并模拟其方法之一的行为 所以我创建了一个回调来非常简单地模拟行为 如果我创建一个基于此接口的新对象 但我想模拟该接口 则此测试通过 模拟的 setUp 方法被正常调用 并且在回调中调用 getVar testing
  • PHPUnit 打印测试执行时间

    有没有办法用 PHPUnit 打印每个测试的执行时间 只需添加 log junit my tests log xml 然后使用电子表格应用程序 Excel Numbers Calc 打开此文件进行查看 您可以获得所需的所有信息 并且可以按测
  • 使用 PHPUnit 和 Selenium 设置测试

    您能帮我设置测试环境吗 我在 Ubuntu 上运行 安装了 并运行 selenium Web 服务器 并通过 PHPUnit 执行我的测试 最有可能的是我陷入了一些小错误 但我现在不知道如何修复它 我的代码很简单 class WebTest
  • PHPstorm PHPunit 代码共同覆盖

    当我在 PHPstorm 中运行测试套件时 所有代码覆盖率都为 0 我知道这不是真的 当我从命令行运行 PHPunit 时 记录的 HTML 输出文档显示我实际上确实有覆盖率并列出所有详细信息 在 PHPstorm 中 我将 PHP 解释器
  • 在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用

    Quoting https phpunit readthedocs io en 9 5 writing tests for phpunit html testing php errors warnings and notices https
  • Symfony 功能测试失败,但相同的请求在浏览器中有效

    我跟着Symfony 文档 http symfony com doc current book testing html functional tests关于功能测试 以便编写我的第一个测试 但我有一些问题 我通过浏览器得到的响应效果很好
  • 在 PHPUnit 中实现给定接口的模拟对象上未定义方法?

    我是单元测试和 PHPUnit 的新手 我需要一个模拟 我可以完全控制它 实现ConfigurationInterface界面 测试对象是ReportEventParamConverter对象和测试必须检查我的对象和界面之间的交互 Repo
  • 对需要发送标头的项目进行单元测试

    我目前正在与 PHPUnit 合作 尝试在我正在编写的内容的同时开发测试 但是 我目前正在编写会话管理器 并且在这样做时遇到了问题 Session 处理类的构造函数是 private function construct if header
  • BrowserKit 组件不可用

    当我尝试启动功能测试时出现错误 BrowserKit 组件不可用 php bin phpunit usr bin env php PHPUnit 6 5 14 by Sebastian Bergmann and contributors T
  • 为什么 symfony DOMCrawler 对象无法在依赖的 phpunit 测试之间正确传递?

    我有一个适用于我的 symfony 应用程序的 phpunit 测试套件 在该测试文件中 我在不同的测试之间有一些依赖关系 并在依赖关系之间传递一个 DOMCrawler 对象 这样我就不必每次都导航到它 但是 在采用我所做的方法时 您似乎
  • phpunit --debug 仍然只显示点

    我想查看 phpunit 运行期间当前执行的测试 我用 debugparam 但仍然只得到点 phpunit debug PHPUnit 3 7 19 by Sebastian Bergmann Configuration read fro
  • 模拟/存根在 PHPUnit 中实现 arrayaccess 的类的对象

    这是我正在为其编写测试套件的类的构造函数 它扩展了 mysqli function construct Config c store config file this gt config c do mysqli constructor pa
  • phpunit 中的组/过滤器不执行特定的测试用例

    我有一个套件 它调用多个套件和许多用于日志 报告和执行的函数 如果我尝试相同的 组或过滤器 模式 它会执行所有测试用例 而不执行选定的单个测试用例 Edit 我正在使用数组套件 如下所示 suite gt addTestSuite admi
  • 在 VS Code 中调试 PHPUnit 测试?

    我最近配置了 VS code 以使用 xdebug 调试 PHP 它与我的应用程序代码一起可靠地工作 但是当我使用 PHPunit 运行单元测试时 我的断点被忽略 我的服务器在一个流浪盒子内运行 My php ini文件包含以下行 xdeb
  • 如何使用 Doctrine 实体创建测试而不保留它们(如何设置 id)

    我正在为 Symfony2 项目进行测试 现在我正在寻找一种方法来创建涉及实体对象的测试而不保留它们 问题是 id是一个私有字段 并且没有设置器 我可以创建新对象并设置一些属性 但我无法测试涉及的任何内容getId calls entity
  • 使用 PHPUnit 模拟对象是否有可能期望调用神奇的 __call() 方法?

    我在测试中有一个模拟对象 真实的对象 PageRepository 使用 call 实现了一个神奇的方法 因此如果您调用 pageRepository gt findOneByXXXX value of field XXXX 它将在数据库中
  • 让 PHPUnit 忽略一些事情?

    我有一个 PHPUnit 测试类 我希望在测试运行中忽略它 我知道我可以通过重命名它来做到这一点 以便它的文件名中不包含 测试 一词 但我不想这样做 因为它比我想要的更混乱了源代码控制水域 有人有建议吗 有几个选项phpunit命令可以帮助

随机推荐