在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用
catching warnings, notices and deprecations with phpunit 9.4 on php 8.1.0
引用 https://phpunit.readthedocs.io/en/9.5/writing-tests-for-phpunit.html#testing-php-errors-warnings-and-notices , "默认情况下,PHP单元将测试执行期间触发的 PHP 错误、警告和通知转换为异常”。牢记这一点,这是我的单元测试:
<?php
class DemoTest extends PHPUnit\Framework\TestCase
{
public function testDemo()
{
try {
trigger_error('zzz', E_USER_DEPRECATED);
} catch (\Throwable $e) {}
}
}
当我在 运行 vendor/bin/phpunit
上 PHPUnit 9.4.0 在 PHP 8.0.9 上时,我得到以下信息(输出的不相关部分已经删除):
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%)
即。在 PHP 8.1 中,我得到了 Throwable 的完整转储,包括堆栈跟踪,而在 PHP 8.0.
中我没有得到它
有什么想法吗?我不想在输出中看到错误,如果没有抛出异常,那么 $this->expectException('PHPUnit\Framework\Error\Deprecated')
也不会为我工作
这是 PHPUnit 与 PHP 8.1 的不兼容性,并且已经在 9.5.5 中修复了一段时间,因此您需要更新。
9.4 不再是受支持的版本。
引用 https://phpunit.readthedocs.io/en/9.5/writing-tests-for-phpunit.html#testing-php-errors-warnings-and-notices , "默认情况下,PHP单元将测试执行期间触发的 PHP 错误、警告和通知转换为异常”。牢记这一点,这是我的单元测试:
<?php
class DemoTest extends PHPUnit\Framework\TestCase
{
public function testDemo()
{
try {
trigger_error('zzz', E_USER_DEPRECATED);
} catch (\Throwable $e) {}
}
}
当我在 运行 vendor/bin/phpunit
上 PHPUnit 9.4.0 在 PHP 8.0.9 上时,我得到以下信息(输出的不相关部分已经删除):
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%)
即。在 PHP 8.1 中,我得到了 Throwable 的完整转储,包括堆栈跟踪,而在 PHP 8.0.
中我没有得到它有什么想法吗?我不想在输出中看到错误,如果没有抛出异常,那么 $this->expectException('PHPUnit\Framework\Error\Deprecated')
也不会为我工作
这是 PHPUnit 与 PHP 8.1 的不兼容性,并且已经在 9.5.5 中修复了一段时间,因此您需要更新。
9.4 不再是受支持的版本。