【问题标题】:PHPUnit Exception testing, error message messes up results outputPHPUnit 异常测试,错误信息弄乱了结果输出
【发布时间】:2009-12-13 15:05:05
【问题描述】:

我似乎无法正确执行此操作,异常的错误消息只是打印出来,使命令行窗口更难阅读。下面是我的代码的结构和测试代码。

public function availableFruits($fruit)
{
  switch($fruit) {
    case 'foo':
    // all good
    break;

    case 'bar':
    // all good
    break;

    default:
    throw new Exception($fruit.' not available!');
    break;

  }
}

public function chooseFruit($fruit)
{
  try {
    availableFruits($fruit);
  } catch (Exception $e) {
    echo $e->getMessage();
  }
}

public function testAvailableFruits()
{
  $this->setExpectedException('Exception');

  chooseFruit('Kiwi');
}

错误消息将在命令行窗口中打印出来,如下所示。我尝试了 phpunit.de 中显示的所有方法,但结果相同。

..Error on line 13 in c:\file\path\fruits.php: Kiwi not available!.F

错误行打印出来,我该如何抑制它,我做得对吗?

【问题讨论】:

  • 这是一个 php 错误。试图实例化一个新类会导致解析器中出现异常,因此它会搞砸事情。我不知道 phpuni 中的 expectedException,因为这在我通过 ubuntu 存储库使用的稳定版本上不可用。

标签: php exception-handling phpunit


【解决方案1】:

我相信另一种方法是在测试方法中添加一个注释块,看起来像......

/**
 * @expectedException ExpectedExceptionName
 */

或者,如果你没有进入 catch 块,你也可以捕获你自己导致方法失败的异常。

【讨论】:

    【解决方案2】:

    这很尴尬,因为我找到了方法。谢谢克里斯,但我也试过了。

    我测试了错误的方法,chooseFruit不是抛出异常的方法,所以打印出异常错误:

    public function testAvailableFruits()
    {
      $this->setExpectedException('Exception');
      **chooseFruit('Kiwi');**
    }
    

    测试引发异常的实际方法将使错误消息静音,因为它根本没有回显:

    public function testAvailableFruits()
    {
      $this->setExpectedException('Exception');
      **availableFruits('Papaya')**
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-07
      • 2016-04-21
      • 2018-03-31
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多