1

我有以下伪代码

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

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

    // do one last thing
}

我看到的问题是,触发异常后的代码永远不会生成。它是否正确?

这只是一个普遍的疑惑——如果这是正常的,我将重构我的测试以直接执行 try/catch,fail()如果没有捕获到则测试。

4

1 回答 1

3

异常后的代码不应该做。把测试想象setExpectedException成一个,try -- catch所以抛出异常后的代码不会被执行。

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

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

于 2012-11-07T14:15:35.087 回答