PHPunit中的例外情况不';行不通

PHPunit中的例外情况不';行不通,php,exception,phpunit,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;

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

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));
}
如果我在浏览器中检查代码,则会正确引发异常。但是当我运行测试时,我总是收到一条“断言抛出异常类型的异常失败”的消息。但是,如果我在测试方法内部抛出异常(取消对抛出行的注释),测试工作正常

有什么线索吗


我在windows XP上使用phpunit 3.7、xampp 3.1。

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

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

因为
异常
是在函数内部捕获的。你不能让它冒泡出来。所以测试不会断言它

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

你在方法中捕获异常,这样它就不会冒泡。你在方法中捕获异常,这样它就不会冒泡。你是对的。我验证了异常是否在try/catch块中启动,它不会被phpunit捕获,因此我无法测试已处理的异常。谢谢@JorgeHernandez:如果这个问题解决了你的问题,请考虑通过点击大绿蜱标记来接受它。✔) 在问题的分数下。过去,我无法让PHPUnit捕获默认异常,但会报告用户定义的异常。例如:expectedException异常将不起作用,但expectedException MyExeception会起作用。你是对的。我验证了如果异常是在try/catch块内启动的,它将不会被PHPUnit捕获,因此我“我不能测试处理异常。谢谢!”JoeGeHelnDez:如果这个问题解决了你的问题,请考虑通过点击大的绿色刻度标记来接受它。✔) 根据问题的分数。在过去,我无法让PHPUnit捕获默认异常,但会报告用户定义的异常。即:expectedException异常不起作用,但expectedException MyExeception会起作用。