升级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
相关产品推荐
相关产品推荐

