PHPunit中的例外不起作用

时间:2013-07-27 17:30:44

标签: php exception phpunit

我想测试一个方法是否引发异常。这是方法:

public function divide($a,$b)
{       
    try
    {
        if($b==0){
        throw new Exception('Divided by zero');
      }else{
        return $a/$b;       
      }
     }
     catch(exception $e)
     {
       return $e;
     }
}

这是测试:

/**
* @expectedException Exception
*/
public function testException()
{
   //throw new Exception('Hello world');
   $this->calculator->divide(10,0));
}

如果我在浏览器中检查代码,则会正确引发异常。但是当我运行测试时,我总是得到一个“Failed断言异常抛出Exception类型的消息”。但是,如果我在测试方法中抛出异常(取消注释抛出线),测试工作正常。

任何线索?

我在Windows XP上使用phpunit 3.7,xampp 3.1。

1 个答案:

答案 0 :(得分:3)

因为Exception被捕获在函数内部。你不要让它冒出来。所以测试不会断言它。

public function divide($a, $b)
{
    if ($b == 0) {
        throw new Exception('Divided by zero');
    } else {
        return $a / $b;
    }
}