當使用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