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

PHPUnit测试疑问:预期结果与实际不符但测试仍显示通过

奇怪的测试“假通过”?来排查下原因

先把你的代码贴出来方便分析:

测试代码

public function addWithNegative() { 
    $result = $this->calculator->add(-2, -2); 
    $this->assertEquals(-5, $result); 
}

业务代码

public function add($a, $b) { 
    return $a + $b; 
}

你说明明预期结果应该是 -4,但写了错误预期 -5 的测试居然显示通过了,这大概率不是PHPUnit出问题了,而是这几个常见原因:

  • 你的测试根本没被执行!
    PHPUnit默认只认两种测试方法:要么方法名以test开头,要么方法上面加了/** @test */注解。你这个addWithNegative既没前缀也没注解,PHPUnit直接跳过它了,自然不会报错,看起来就像“通过”了。

    解决起来很简单:要么把方法名改成testAddWithNegative,要么给方法加个注解,同时记得把预期值改成正确的-4:

    /** @test */
    public function addWithNegative() { 
        $result = $this->calculator->add(-2, -2); 
        $this->assertEquals(-4, $result); 
    }
    
  • 缓存搞的鬼
    如果之前你写过正确的测试,可能是PHPUnit或者你的IDE缓存了旧的测试结果。试试清理一下PHPUnit的缓存(如果开启了的话),或者重启IDE再重新跑一遍测试。

  • 实例化出问题了
    检查下测试类里的$this->calculator是不是真的实例化了你写的那个有add方法的业务类。要是实例错了,返回奇怪的值也有可能,但这个概率比较低,先优先排查前两个原因。

总之,先确保测试方法能被PHPUnit识别执行,再修正预期值,这样就能得到正确的测试结果啦~

内容的提问来源于stack exchange,提问作者user8236402

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:41:26