You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级PHPUnit至8/9版本后断言数量骤降,求排查方案

PHPUnit升级至8/9版本后断言数量大幅下降

最近在做代码库升级,把PHPUnit从7版本升到9版本后,发现断言数量出现大幅下降。降级到PHPUnit 8版本后,断言数量依然很少;但回退到PHPUnit 7版本,断言数量又恢复了正常水平。

我用--debug参数运行测试对比输出,没有发现测试被跳过的情况,代码覆盖率等其他指标也没有明显差异。

PHPUnit 7运行结果:

Time: 14.08 minutes, Memory: 1.71 GB
OK, but incomplete, skipped, or risky tests!
Tests: 2053, Assertions: 143695, Skipped: 56.

PHPUnit 8运行结果:

Time: 16.14 minutes, Memory: 1.31 GB
OK, but incomplete, skipped, or risky tests!
Tests: 2053, Assertions: 22304, Skipped: 56, Risky: 56.

我们有部分可选执行的测试:当对应设置不为true时会被跳过,这类测试在PHPUnit 8中被标记为Risky,后续会处理这个问题,但这应该不会影响断言数量——两种版本下这些测试都没有运行。

我查阅了PHPUnit 8的更新日志,但没找到相关线索。想请教:这是PHPUnit的正常变更,还是存在问题?能不能安全忽略这个差异?


更新:

我在测试类中添加了tearDown方法,输出$this->getCount()和$this->getNumAssertions()的结果,发现getNumAssertions的结果大多为0,推测调用位置或方式可能有误。

PHPUnit 7运行结果:

ERRORS!
Tests: 2053, Assertions: 142339, Errors: 3, Skipped: 67.
Sum of 'getCount' results: 22341

PHPUnit 8运行结果:

ERRORS!
Tests: 2053, Assertions: 22641, Errors: 2, Skipped: 67.
Sum of 'getCount' results: 22342

注:和最初结果数值略有差异,因为期间调整过部分测试。

有意思的是,PHPUnit 7和8的getCount结果总和,和PHPUnit 8的断言总数相近,但依然无法解释为什么PHPUnit 7的断言数会高出这么多。

内容的提问来源于stack exchange,提问作者Michiel van de Vis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:50:26