【问题标题】:How to fix phpunit fatal error must be compatible?如何修复phpunit致命错误必须兼容?
【发布时间】:2019-12-18 21:15:17
【问题描述】:

在使用 phpunit 8.5 和 php 7.2.24 时,我在运行测试时不断收到以下错误:

Fatal error: Declaration of PHPUnit\TextUI\ResultPrinter::addError(PHPUnit\Framework\Test $test, Throwable $t, float $time): void must be compatible with PHPUnit_Framework_TestListener::addError(PHPUnit_Framework_Test $test, Exception $e, $time) in /var/local/gc-global.01/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php on line 31

我尝试了不同版本的 phpunit 并查看了我的测试,但我仍然无法理解问题所在。

有人见过这样的吗?

【问题讨论】:

  • $time vs float $time
  • 谢谢@u_mulder。我知道。问题是这是框架上的一个错误,我还没有找到任何错误报告,所以我认为肯定有其他问题。
  • 这里有点不对劲——非命名空间的类名(例如PHPUnit_Framework_TestListener)在 v6 中从 PHPUnit 中消失了,所以我不确定这个错误是从哪里拉出来的。您是否也安装了任何向后兼容层?如果有,是否有可用的更新?

标签: php phpunit


【解决方案1】:

您似乎混淆了不同的 PHPUnit 安装(因为 PHPUnit_Framework_TestListener 已经存在很长时间了,当然在 PHPUnit 8.5 中也不存在)。

例如,您可能使用 Composer 安装 PHPUnit,并将 Composer 生成的自动加载器配置为 PHPUnit 的引导脚本,但随后您使用 vendor/bin/phpunit 以外的可执行文件调用 PHPUnit。

【讨论】:

  • 嗨塞巴斯蒂安,感谢您的回复。我怀疑是这样的,但我使用的是 vendor/bin/phpunit 上的版本,并且我还完全删除了 vendor 文件夹并重新安装,但错误仍然存​​在。还有什么想法吗?谢谢
  • 塞巴斯蒂安,非常感谢,我刚刚发现其中一个测试包括一个不同的自动加载器,它正在加载不同版本的 phpunit。
猜你喜欢
  • 2012-04-12
  • 2012-07-01
  • 1970-01-01
  • 2016-10-23
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 2021-12-13
相关资源
最近更新 更多