PHPUnit 断言是否引发了异常?

2022-08-30 05:53:52

有谁知道是否有一个或类似的东西可以测试正在测试的代码中是否抛出了异常?assert


答案 1
<?php
require_once 'PHPUnit/Framework.php';

class ExceptionTest extends PHPUnit_Framework_TestCase
{
    public function testException()
    {
        $this->expectException(InvalidArgumentException::class);
        // or for PHPUnit < 5.2
        // $this->setExpectedException(InvalidArgumentException::class);

        //...and then add your test code that generates the exception 
        exampleMethod($anInvalidArgument);
    }
}

expectException() PHPUnit documentation

PHPUnit 作者文章提供了有关测试异常最佳实践的详细说明。


答案 2

在 PHPUnit 9 发布之前,您还可以使用文档块注释

class ExceptionTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException InvalidArgumentException
     */
    public function testException()
    {
        ...
    }
}

对于 PHP 5.5+(尤其是命名空间代码),我现在更喜欢使用 ::class


推荐