PHPUnit 弃用警告未通过测试

PHPUnit deprecation warning fails test

我在 PHP 5.3.29 安装中使用 PHPUnit 4.8。我们应用程序中的一些代码使用了已弃用的 mysql_* 功能,并且 PHPUnit 将这些实例的弃用通知转换为异常,从而使那些特定的测试用例失败。

现在我已经将 convertErrorsToExceptions="false" 包含在 config.xml 中,但这似乎没有帮助,因为它仍在发生。

任何人都可以帮助阐明这里可能发生的事情吗?

干杯!

编辑:在gist.github.com

上添加了示例文件

convertErrorsToExceptions="false" 配置选项只控制 E_ERROR 到异常的转换。不过,弃用表示为 E_DEPRECATED

一个configuration option is missing for controlling the conversion of E_DEPRECATED to exceptions。这将在 PHPUnit 6.2 中添加。这不会反向移植到 PHPUnit 4.8,即您正在使用的 PHPUnit 版本,因为该版本已达到生命周期的尽头。

在您的 bootstrap 脚本中,您可以设置 PHPUnit_Framework_Error_Deprecated::$enabled = false;,但是,这将禁用 E_DEPRECATED 到异常的转换。

在最近的版本中(使用 PHP 个命名空间),这变成了:

\PHPUnit\Framework\Error\Deprecated::$enabled = false;

如果有人正在寻找 Symfony/Drupal 相关的解决方案,一种快速的方法是在您的测试文件中设置环境变量(我需要它,因为弃用警告来自第三方存储库)。

putenv('SYMFONY_DEPRECATIONS_HELPER=disabled');

如果您正在寻找 Symfony 3.1 及更高版本的解决方案,答案是

<env name="SYMFONY_DEPRECATIONS_HELPER" value="disabled" />