当使用PHPUnit测试异常时,要求每个语句或断言必须抛出异常以便测试通过的最佳方法是什么?如何使用PHPUnit测试多个异常?
我基本上想要做的是这样的:我来了;下面,做这项工作,但相当难看IMO
public function testExceptions()
{
$this->setExpectedException('Exception');
foo(-1); //throws exception
foo(1); //does not throw exception
}
//Test will fail because foo(1) did not throw an exception
。
public function testExceptions()
{
try {
foo(-1);
} catch (Exception $e) {
$hit = true;
}
if (!isset($hit))
$this->fail('No exception thrown');
unset($hit);
try {
foo(1);
} catch (Exception $e) {
$hit = true;
}
if (!isset($hit))
$this->fail('No exception thrown');
unset($hit);
}
我确实看到你的观点,尽管当每个测试的要点确保引发异常时,仍然感觉有多个测试有点奇怪。 – etheros 2009-10-21 14:13:57
您还可以使用'@dataProvider注释'来传入值(甚至是预期的异常的名称 - 用'$ this-> setExpectedException($ x)')。添加一个新的测试值(这将引发一个异常)只会是dataProvider函数中的另一个数组项。 – 2011-03-18 11:06:48
罗伯特马丁会说总是将病例分成不同的测试。在我看来,@ AlisterBulman答案显示了该问题的完美解决方案。 – 2013-01-08 17:35:21