PHPUnit在setExpectedException()之后停止执行

时间:2012-11-07 14:01:53

标签: php phpunit

我有以下伪代码

public function testSomething() {
    // assert something
    // assert something else

    $this->setExpectedException(...);
    // trigger my exception here

    // do one last thing
}

我看到的问题是,在触发异常之后的代码永远不会发生。这是对的吗?

这只是一个普遍的想法 - 如果这是正常的,我将重构我的测试以直接执行try / catch并且fail()测试如果没有捕获。

1 个答案:

答案 0 :(得分:3)

不应该在异常之后的代码。可以认为setExpectedException将测试变为try -- catch因此抛出异常后的代码将不会被执行。

如果你需要在异常后做/检查,你应该抓住它。虽然有一个警告与你的捕获,具体说明抛出什么异常。 PHPUnit会为失败的测试抛出异常,您可能会意外地捕获此异常,这可能导致您的测试错误地通过。

更新: 如果您正在执行的代码正在清理,请考虑将其移动到测试的tearDown方法中。