PHP 8.1升级后PHPUnit TestCase::count()弃用错误求助
解决PHP 8.1下PHPUnit TestCase::count()的弃用错误
问题原因
PHP 8.1严格执行接口方法的返回类型匹配规则,Countable接口的count()方法明确要求返回类型为int,而你的TestCase子类重写的count()方法既未声明匹配的返回类型,也没有正确使用抑制警告的属性。你之前把[\ReturnTypeWillChange]放在注释里是无效的——这是PHP属性,不属于注释内容。
解决方案
方案1:声明匹配的返回类型(推荐)
直接给count()方法添加int返回类型,完全符合接口规范,彻底消除警告:
/** * Counts the number of test cases executed by run(TestResult result). * * @return int */ public function count(): int { return 1; }
方案2:正确使用返回类型兼容属性(临时抑制)
如果暂时不想修改返回类型,需将#[\ReturnTypeWillChange]作为PHP属性放在方法上方(而非注释内部):
/** * Counts the number of test cases executed by run(TestResult result). * * @return int */ #[\ReturnTypeWillChange] public function count() { return 1; }
注意:该属性仅用于临时兼容旧代码,长期来看推荐使用方案1,保证代码符合PHP类型规范。
内容的提问来源于stack exchange,提问作者Aleksey Levandovskiy
相关产品推荐
相关产品推荐

