单元测试类 - 抛出错误是不可能的?

Pek*_*ica 2 php tdd phpunit unit-testing

我正在围绕PHPUnit,并试图为现有的类构建一个测试用例.

该类是一个静态配置类,用于获取,设置和列出应用程序中可用的配置选项.

这个班级非常严格.如果我尝试使用不兼容的值设置配置设置,或者配置设置不存在,E_USER_ERROR则抛出a,停止执行脚本.即使它不是错误处理的艺术,它也适用于本课程的目的.该类中的错误始终是编程错误的结果,而不是用户输入错误.

这具有很大的优势,您无需担心如何处理或记录错误消息,从而使代码保持苗条.输出消息(或不在生产中),die(),完成.

但是,使用单元测试,我看不出如何继续使用经典的PHP错误.我将不得不将函数转换为返回成功标志,或抛出异常.

我对么?

或者PHPUnit中是否有一种方法可以预期错误,因为有预期的异常?我马上看不到任何东西.

Gor*_*don 7

PHPUnit手册:

默认情况下,PHPUnit将在执行测试期间触发的PHP错误,警告和通知转换为异常.例如,使用这些例外,您可以期望测试触发PHP错误,如例4.8所示.

class ExpectedErrorTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException PHPUnit_Framework_Error
     */
    public function testFailingInclude()
    {
        include 'not_existing_file.php';
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,同样适用于例外.

编辑: 没有看到评论中已经提到这一点,但我会留在这里供参考,以防有人查找相同的问题并且没有阅读评论

  • +1不是像我们其他人一样盲目;). (2认同)