我有以下伪代码
public function testSomething() {
// assert something
// assert something else
$this->setExpectedException(...);
// trigger my exception here
// do one last thing
}
我看到的问题是,在触发异常之后的代码永远不会发生。这是对的吗?
这只是一个普遍的想法 - 如果这是正常的,我将重构我的测试以直接执行try / catch并且fail()
测试如果没有捕获。
答案 0 :(得分:3)
不应该在异常之后的代码。可以认为setExpectedException
将测试变为try -- catch
因此抛出异常后的代码将不会被执行。
如果你需要在异常后做/检查,你应该抓住它。虽然有一个警告与你的捕获,具体说明抛出什么异常。 PHPUnit会为失败的测试抛出异常,您可能会意外地捕获此异常,这可能导致您的测试错误地通过。
更新: 如果您正在执行的代码正在清理,请考虑将其移动到测试的tearDown方法中。